فى بعض التطبيقات تحتاج الى اعادة الرسم repaint على النافذة او اى اداة كثيرا على سبيل المثال قد تحتاج الى انعاش نافذة كل 10 milliseconds لانشاء حركة متتابعة وهمية، فى كل مرة يتم فيها انعاش النافذةrefresh تقوم بمسح المحتوى الحالى ورسم اطار جديد .
عند رسم اشكال متحركة اكثر تعقيدا ستقوم بمعالجة العشرات من عناصر الرسم فى وقت واحد، هذه المعالجة تاخذ كمية صغيرة من الوقت ولكن مهمة جدا، والمشكلة هى انه عندما تقوم برسم هذه العناصر مباشرة على النافذة ،الحركة ستسبب فى وميض مزعج بسبب مسح واعادة الرسم من جديد لحل هذه المشكلة كنا نستخدم تقنية تسمى double-buffering باستخدام هذه التقنية كان كل اطار يتم رسمه وتجميعة فى الذاكرة ويتم رسمه وعرضه على النافذة فقط وهو مكتمل حتى لا يرى المستخدم عملية اعادة الرسم امامه .
فى اطار العمل .NET 2 تم حل هذه المشكلة وتوفير خاصية تقوم بتنفيذ هذه التقنية هذه الخاصية هى DoubleBuffered وتم اضافتها الى الفئة القاعدية Control ومن المعروف ان الفورم وكل الادوات ترث هذه الفئة اى ستجد هذه الخاصية ضمن خصائص الفورم والادوات كل ما عليك هو اسناد القيمة True لهذه الخاصية
على سبيل المثال اذا قمت بتفعيل هذه الخاصية فلن يتم انعاش النموذج حتى ينتهى من من تنفيذ الحدث paint،اى سيتم نسخ الصورة مباشرة على الفورم وبعدها تتم عملية الانعاش،واذا لم تكن هذه الخاصية مفعلة فى كل مرة يتم فيها رسم عنصر يتم انعاش النموذج وبهذا يتم انعاش النموذج عشرات المرات وظهور الوميض المزعج من جديد
فى المرفقات تجد برنامج حاول تطبيقه مرة والخاصيةDoubleBuffered للفورم مفعلة True ومرة وهى غير مفعلة False ولا حظ الفرق..... B)
بالتوفيق


