H_vakilian
شنبه 23 آذر 1387, 02:45 صبح
من یک PictureBox دارم که میخوام مثل صفحه رسم اشکال در Paint رفتار کنه.
کدش اینجاست
با این کدی که من نوشتم ملومه که وقتی شکل دوم رو می خوام بکشم اگه رو شکل اول قرار بگیره مقداری از اون رو پاک مکنه این مشکل رو چطور حل کنم
با هر بار اتفاق افتادن رویداد MouseMove (در صورتی که دکمه موس پایین باشد)یک مستطیل رسم مشه که اگه ادامه داشته با یک مستطیل سفید پاک میشه(مشکل همین مستطیل سفید هستش که شکلهای زیری رو نیز غیر از مستطیل قبلی پاک می کنه)
در ضمن چطور می تونم این صفحه رو بریزم تو یک Bitmap
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (Bool_MuoseStatus)
{
Pen_Main = new Pen(Color.White , 1);
GraphicRectangle MyRectangle = new GraphicRectangle(true, pictureBox1, Pen_Main, Rec_Main.Location, Rec_Main.Width, Rec_Main.Height);
Pen_Main.Color = colorDialog1.Color;
GraphicRectangle MyRectangle1 = new GraphicRectangle(true, pictureBox1 , Pen_Main , Point_StartPoint , Control.MousePosition.X - Int_MousePositionX , Control.MousePosition.Y - Int_MousePositionY );
Rec_Main.Location = Point_StartPoint;
Rec_Main.Width = Control.MousePosition.X - Int_MousePositionX ;
Rec_Main.Height = Control.MousePosition.Y - Int_MousePositionY ;
//.i);
}
}
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
Bool_MuoseStatus = true;
Point_StartPoint = new Point();
Point_StartPoint=MousePositionOnControl();
Int_MousePositionX = Control.MousePosition.X;
Int_MousePositionY = Control.MousePosition.Y;
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
Bool_MuoseStatus = false;
Rec_Main.Location = new Point(0, 0);
Rec_Main.Width = 0;
Rec_Main.Height = 0;
}
کدش اینجاست
با این کدی که من نوشتم ملومه که وقتی شکل دوم رو می خوام بکشم اگه رو شکل اول قرار بگیره مقداری از اون رو پاک مکنه این مشکل رو چطور حل کنم
با هر بار اتفاق افتادن رویداد MouseMove (در صورتی که دکمه موس پایین باشد)یک مستطیل رسم مشه که اگه ادامه داشته با یک مستطیل سفید پاک میشه(مشکل همین مستطیل سفید هستش که شکلهای زیری رو نیز غیر از مستطیل قبلی پاک می کنه)
در ضمن چطور می تونم این صفحه رو بریزم تو یک Bitmap
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (Bool_MuoseStatus)
{
Pen_Main = new Pen(Color.White , 1);
GraphicRectangle MyRectangle = new GraphicRectangle(true, pictureBox1, Pen_Main, Rec_Main.Location, Rec_Main.Width, Rec_Main.Height);
Pen_Main.Color = colorDialog1.Color;
GraphicRectangle MyRectangle1 = new GraphicRectangle(true, pictureBox1 , Pen_Main , Point_StartPoint , Control.MousePosition.X - Int_MousePositionX , Control.MousePosition.Y - Int_MousePositionY );
Rec_Main.Location = Point_StartPoint;
Rec_Main.Width = Control.MousePosition.X - Int_MousePositionX ;
Rec_Main.Height = Control.MousePosition.Y - Int_MousePositionY ;
//.i);
}
}
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
Bool_MuoseStatus = true;
Point_StartPoint = new Point();
Point_StartPoint=MousePositionOnControl();
Int_MousePositionX = Control.MousePosition.X;
Int_MousePositionY = Control.MousePosition.Y;
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
Bool_MuoseStatus = false;
Rec_Main.Location = new Point(0, 0);
Rec_Main.Width = 0;
Rec_Main.Height = 0;
}