الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

معلومة/Improve Redraw Speeds for GDI+

مغلق
بدأه SOLO.NET في 25 نوفمبر 2005 · 4 رد · 693 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

فى بعض التطبيقات تحتاج الى اعادة الرسم repaint على النافذة او اى اداة كثيرا على سبيل المثال قد تحتاج الى انعاش نافذة كل 10 milliseconds لانشاء حركة متتابعة وهمية، فى كل مرة يتم فيها انعاش النافذةrefresh تقوم بمسح المحتوى الحالى ورسم اطار جديد .

عند رسم اشكال متحركة اكثر تعقيدا ستقوم بمعالجة العشرات من عناصر الرسم فى وقت واحد، هذه المعالجة تاخذ كمية صغيرة من الوقت ولكن مهمة جدا، والمشكلة هى انه عندما تقوم برسم هذه العناصر مباشرة على النافذة ،الحركة ستسبب فى وميض مزعج بسبب مسح واعادة الرسم من جديد لحل هذه المشكلة كنا نستخدم تقنية تسمى double-buffering باستخدام هذه التقنية كان كل اطار يتم رسمه وتجميعة فى الذاكرة ويتم رسمه وعرضه على النافذة فقط وهو مكتمل حتى لا يرى المستخدم عملية اعادة الرسم امامه .

فى اطار العمل .NET 2 تم حل هذه المشكلة وتوفير خاصية تقوم بتنفيذ هذه التقنية هذه الخاصية هى DoubleBuffered وتم اضافتها الى الفئة القاعدية Control ومن المعروف ان الفورم وكل الادوات ترث هذه الفئة اى ستجد هذه الخاصية ضمن خصائص الفورم والادوات كل ما عليك هو اسناد القيمة True لهذه الخاصية

على سبيل المثال اذا قمت بتفعيل هذه الخاصية فلن يتم انعاش النموذج حتى ينتهى من من تنفيذ الحدث paint،اى سيتم نسخ الصورة مباشرة على الفورم وبعدها تتم عملية الانعاش،واذا لم تكن هذه الخاصية مفعلة فى كل مرة يتم فيها رسم عنصر يتم انعاش النموذج وبهذا يتم انعاش النموذج عشرات المرات وظهور الوميض المزعج من جديد

فى المرفقات تجد برنامج حاول تطبيقه مرة والخاصيةDoubleBuffered للفورم مفعلة True ومرة وهى غير مفعلة False ولا حظ الفرق..... B)

بالتوفيق

Improve Redraw Demo.zip

VB.NET and C# Comparison

http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

002.gif

=-=-=-=-=-=-=
ذو العلم يشقى فى النعيم بعلمه .:. واخو الجهالة فى الشقاوة ينعم
=-=-=-=-=-=-=
يا من بدنياه اشتغل . قد غره طول الأمل . فالموت يأتى بغتة . والقبر صندوق العمل
=-=-=-=-=-=-=
ان لم تستطع ان تجد ما تفعله فافعل ما لم تسطع ان تجده

screen_shot_2011-05-19_at_12.44.49_pm.pn

#2

تحياتي أخيـ SOLO.NET

المثال يظهر رساله خطأ ولا يعمل لا أدري هل المشكله فالمثال أم عندي ؟

<< CLICK TO START>>

post-41869-046528000%201305052277.jpg

ليس أن تجد حلا بل أن تجد الافضل

أن تصـــنع الخـيال هذا هوا الأفضل</span>

#3

لا يوجد مشكلة فى المثال ولكن كما هو واضح من عنوان المقالة انه يعمل على .NET Framework2

يعنى معمول بلغة vb.net2005 وتحديدا الاصدار Express

لو كنتى شغلتى المثال على المذكور اعلاه يا ريت توضحى المشكلة

VB.NET and C# Comparison

http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

002.gif

=-=-=-=-=-=-=
ذو العلم يشقى فى النعيم بعلمه .:. واخو الجهالة فى الشقاوة ينعم
=-=-=-=-=-=-=
يا من بدنياه اشتغل . قد غره طول الأمل . فالموت يأتى بغتة . والقبر صندوق العمل
=-=-=-=-=-=-=
ان لم تستطع ان تجد ما تفعله فافعل ما لم تسطع ان تجده

screen_shot_2011-05-19_at_12.44.49_pm.pn

#4

لا قمت بتشغيله على vb.net 2003

مالي نصيب فالمثال. :angry:

تم تعديل هذه المشاركة بواسطة POWER _GIRL في 27 نوفمبر 2005 في 22:41

<< CLICK TO START>>

post-41869-046528000%201305052277.jpg

ليس أن تجد حلا بل أن تجد الافضل

أن تصـــنع الخـيال هذا هوا الأفضل</span>

#5
اقتباس
مالي نصيب فالمثال.

معوضه فى فرصه اخرى

على كل حال لو كان لديك اتصال سريع تقدر تحملى VB.NET2005 Express وحجمه تقريبا445mb

من هذا الرابطhttp://msdn.microsoft.com/vstudio/express/support/install/

بالتوفيق

VB.NET and C# Comparison

http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

002.gif

=-=-=-=-=-=-=
ذو العلم يشقى فى النعيم بعلمه .:. واخو الجهالة فى الشقاوة ينعم
=-=-=-=-=-=-=
يا من بدنياه اشتغل . قد غره طول الأمل . فالموت يأتى بغتة . والقبر صندوق العمل
=-=-=-=-=-=-=
ان لم تستطع ان تجد ما تفعله فافعل ما لم تسطع ان تجده

screen_shot_2011-05-19_at_12.44.49_pm.pn

هذا الموضوع مغلق.

مواضيع مشابهة