PDA

View Full Version : سوال: پاک کردن فرم



mbsmbsmbs
سه شنبه 09 شهریور 1389, 14:56 عصر
با سلام خدمت دوستان عزیز
برنامه ای نوشم که روی فرمم کاربر با MouseMove کردن یه مستطیل رسم میکنه.
کدم اینه:


if (kifer == true && btnsel == "fillRect")
{
G = this.CreateGraphics();
G.Clear(this.BackColor); مشکلم اینه
Pen pen = new Pen(Color.Gold,3);
Point p1 = new Point();
Point p2 = new Point();

G.DrawRectangle(pen, p1.X, p1.Y, p2.X - p1.X, p2.Y - p1.Y);
}

حالا مشکلم اینه که در خطی که مشخص کردم برای پاک کردن شکل قبلی بک کالر فرمم رو نشون میده و در فرم من یک تصویر رو به عنوان بک گراند مشخص کردم که با پاک کردن صفحه بک کالرم مشخص میشه و بک گراندم نشون داده نمیشه حالا می خوام بدون راه دیگه ای برای پاک کردن صفحه وجود داره؟

اینم کل کدم:




string btnsel = "";

Graphics G;
Point M1 = new Point();
bool kifer = false;
private void btnRectunfill_Click(object sender, EventArgs e)
{
if (btnsel == "NotfillRect")
{
btnsel = "";
}
else
{
btnsel = "NotfillRect";
}
}


private void SystematicPreviewFrm_MouseDown(object sender, MouseEventArgs e)
{
M1 = new Point(e.X, e.Y);
kifer = true;
}

private void SystematicPreviewFrm_MouseUp(object sender, MouseEventArgs e)
{
kifer = false;
}

private void SystematicPreviewFrm_MouseMove(object sender, MouseEventArgs e)
{
if (kifer == true && btnsel == "NotfillRect")
{
G = this.CreateGraphics();
G.Clear(this.BackColor);
Pen pen = new Pen(Color.Gold, 3);
Point p1 = new Point();
Point p2 = new Point();
if (M1.X < e.X)
{
p1.X = M1.X;
p2.X = e.X;
}
else
{
p1.X = e.X;
p2.X = M1.X;
}
if (M1.Y < e.Y)
{
p1.Y = M1.Y;
p2.Y = e.Y;
}
else
{
p1.Y = e.Y;
p2.Y = M1.Y;
}
G.DrawRectangle(pen, p1.X, p1.Y, p2.X - p1.X, p2.Y - p1.Y);
}
if (kifer == true && btnsel == "fillRect")
{
G = this.CreateGraphics();
HatchBrush brush = new HatchBrush(HatchStyle.Divot, Color.Green, Color.Gold);
Point p1 = new Point();
Point p2 = new Point();
if (M1.X < e.X)
{
p1.X = M1.X;
p2.X = e.X;
}
else
{
p1.X = e.X;
p2.X = M1.X;
}
if (M1.Y < e.Y)
{
p1.Y = M1.Y;
p2.Y = e.Y;
}
else
{
p1.Y = e.Y;
p2.Y = M1.Y;
}
G.FillRectangle(brush, p1.X, p1.Y, p2.X - p1.X, p2.Y - p1.Y);
G.Dispose();
}
}

private void btnRectFill_Click(object sender, EventArgs e)
{
if (btnsel == "fillRect")
{
btnsel = "";
}
else
{
btnsel = "fillRect";
}