PDA

View Full Version : سوال: کشیدن اشکال خط و مستطیل روی صفحه نمایش



ali_behshahr
چهارشنبه 20 اردیبهشت 1391, 11:53 صبح
سلام دوستان من می خوام بجای اینکه روی فرمم چیزی Paint کنم روی صفحه نمایش چیزی Paint کنم کسی می تونه منو راهنمایی کنه .

یه سوال دیگه من یه پنل دارم که چندتا کنترل روش هست هنگامی که می خوام روی این پنل چیزی در هنگام اجرا Paint کنم مثلآ یه مستطیل تمام اون کنترل ها و خود مستطیل شروع کنن به چشمک زدن یا به قولی رفرش میشن
چه جوری می تونم جلوی این کار رو بگیرم

ali_behshahr
چهارشنبه 20 اردیبهشت 1391, 22:28 عصر
روی فرم جواب می ده ولی روی پنل یا flowLayoutPanel جواب نمی ده روی این عناصر باید چی کار کرد

رافعی مهدی
پنج شنبه 21 اردیبهشت 1391, 05:57 صبح
سلام
یه سری به لینکهایی که اینجا (http://barnamenevis.org/showthread.php?339677-%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%D8%AA%D9%88%D8%A7%D8%A8%D8%B9-2%D8%A8%D8%B9%D8%AF%DB%8C-%D9%88-3%D8%A8%D8%B9%D8%AF%DB%8C-%D8%AF%D8%B1-GDI&p=1501592&viewfull=1#post1501592) دادم بزنید، در برنامه رسم گراف توسط کاربر عملیات Paint روی Panel انجام میشه.

رافعی مهدی
پنج شنبه 21 اردیبهشت 1391, 21:59 عصر
اگر منظور ایشون و شما از صفحه نمایش همون desktop هست (؟!!!) که خب این یه سوال معروف هست و مثلاً میتونید اینجا (http://stackoverflow.com/questions/2905783/how-to-effectively-draw-on-desktop-in-c) رو ببینید. من بر اساس توضیحات بعدی که در مورد Paint بر روی Panel دادند اون لینک رو معرفی کرده بودم. البته بد نیست اضافه کنم که DoubleBuffered هم ضمن اینکه بی تأثیر نیست، مشکل چندانی رو حل نمیکنه! برای رفع مشکل flick در Paint یه راه حل اساسی وجود داره. بجای کنترل Panel معمولی در فرم از پنل زیر استفاده کنید:


internal class OptimizedPanel : Panel
{
public OptimizedPanel()
{
this.SetStyle(ControlStyles.UserPaint, true);
this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
}
}

فوق العاده برای انجام کارهای گرافیکی و تا حد مطلوبی انیمیشن موثره.