PDA

View Full Version : سوال: چرا خطی که با DrawLine کشیده شده، هنگام سوئیچ بین کنترل ها از بین میره؟



saeedgharedaghi
چهارشنبه 14 اردیبهشت 1390, 14:55 عصر
سلام خدمت اهالی برنامه نویس و ...
من دارم یه برنامه رسم گراف مینویسم
تو برنامه وقتی تعداد گراف و یال ها را رسم میکنم. مشکلی نیست.
مشکل من اینه که وقتی بین کنترل ها با tab حرکت میکنم یال رسم شده پاک میشه!

رسم یال = با استفاده از متد DrawLine شی graphics صورت میگیره.

خواهش میکنم کمک کنید.

اینم سورسش :

saeedgharedaghi
چهارشنبه 14 اردیبهشت 1390, 17:18 عصر
کسی نیست کمک کنه!

exlord
چهارشنبه 14 اردیبهشت 1390, 17:19 عصر
این به خاطر اینه که وقتب بین کتنرل ها حرکت میکنین فرم و کنترل ها Repaint میشن در این حالت هر چیزی که بعدن رسم شده دیگه رسم نمیشه ...
برای فیکس کردن این مشکل 2 راه دارین ...
1 - شکل هاتون رو توی اونت Paint انجام بدین در این صورت موقع Repaint شدن شکل های شما هم دوباره رسم میشن ...
2 - روی یه Bitmap رسم کنین ... و اونو به عنوان backgroung یا توی picturebox نشون بدین ...

saeedgharedaghi
چهارشنبه 14 اردیبهشت 1390, 17:34 عصر
ممنون، برم امتحان کنم ببینم میتونم درست کنم.

haghft
چهارشنبه 14 اردیبهشت 1390, 17:53 عصر
این روش روش خوبیه ولی یه روش هم هست که از نامعتبرسازی اسفاده میکنه و دیگه نیازی به picturebox هم نیست.
اون روش اینه:
bool check;

private void button1_Click(object sender, EventArgs e)
{
check = true;
Invalidate();
}

private void Form1_Paint(object sender, PaintEventArgs e)
{
if (check)
{
Graphics g = e.Graphics;
g.DrawLine(Pens.Red, 10, 10, 20, 20);
g.Dispose();
}
}
در ضمن با قرار دادن این کد بعد از Graphics g = e.Graphics; میتوانید کیفیت تصویر را بالابرده و از بره خوردن جلوگیری کنید:
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality ;