12-04-16, 06:15 AM
السلام عليكم و رحمة الله و بركاته...
عندما يتطلب الأمر تغيير النصوص و الألوان و الرسومات على الشاشة بشكل متكرر فإن استعمال أوامر الرسوميات (Graphics) يعطي نتائج أفضل من استعمال المكونات مثل الـ Label و الـ Image لأن كل مكون يتم تحديثه على حدة ما يتسبب في ظهور الوميض (أو ما يعرف بالـ flicker) على الشاشة.
1. (مهم) اضبط الخاصية AutoRedraw للـ Form على True. هذا سيجعل كل أوامر الرسوميات توجه إلى صورة من سطح النافذة في الذاكرة (in-memory image) و هي صورة يستخدمها النظام Windows لتحديث صورة النافذة على الشاشة كلما لزم الأمر. ضبط الخاصية AutoRedraw على True سيمنع الوميض لأنه سيتم تحديث كل المناطق المتغيرة دفعة واحدة.
2. احتفظ بمكونات الـ Labels الثلاثة للاسترشاد بخصائصها في طباعة النصوص على الـ Form، مع ضبط الخصائص التالية للـ Labels الثلاثة:
أ. الخاصية AutoSize على True.
ب. الخاصية Visible على False (حتى لا تظهر أثناء التشغيل).
* اضبط مواقع الـ Labels حيث تريد ظهور النصوص.
3. اكتب الكود التالي في حدث الـ Timer بدل الكود السابق:
نرجو الاستفادة و السلام.
عندما يتطلب الأمر تغيير النصوص و الألوان و الرسومات على الشاشة بشكل متكرر فإن استعمال أوامر الرسوميات (Graphics) يعطي نتائج أفضل من استعمال المكونات مثل الـ Label و الـ Image لأن كل مكون يتم تحديثه على حدة ما يتسبب في ظهور الوميض (أو ما يعرف بالـ flicker) على الشاشة.
1. (مهم) اضبط الخاصية AutoRedraw للـ Form على True. هذا سيجعل كل أوامر الرسوميات توجه إلى صورة من سطح النافذة في الذاكرة (in-memory image) و هي صورة يستخدمها النظام Windows لتحديث صورة النافذة على الشاشة كلما لزم الأمر. ضبط الخاصية AutoRedraw على True سيمنع الوميض لأنه سيتم تحديث كل المناطق المتغيرة دفعة واحدة.
2. احتفظ بمكونات الـ Labels الثلاثة للاسترشاد بخصائصها في طباعة النصوص على الـ Form، مع ضبط الخصائص التالية للـ Labels الثلاثة:
أ. الخاصية AutoSize على True.
ب. الخاصية Visible على False (حتى لا تظهر أثناء التشغيل).
* اضبط مواقع الـ Labels حيث تريد ظهور النصوص.
3. اكتب الكود التالي في حدث الـ Timer بدل الكود السابق:
PHP كود :
Dim OldFont As StdFont ' للاحتفاظ بالخط الحالي للنافذة
Dim OldColor As OLE_COLOR ' للاحتفاظ بلون النص الحالي للنافذة
Static Col1, Col2, Col3 As Integer
Static c1, c2, C3 As Integer
If (Col1 = 0 Or Col1 = 250) And (Col2 = 0 Or Col2 = 250) _
And (Col3 = 0 Or Col3 = 250) Then
c1 = Int(Rnd * 3)
c2 = Int(Rnd * 3)
C3 = Int(Rnd * 3)
End If
If c2 = 1 And Col2 <> 0 Then Col2 = Col2 - 10
If C3 = 1 And Col3 <> 0 Then Col3 = Col3 - 10
If c1 = 1 And Col1 <> 0 Then Col1 = Col1 - 10
If c1 = 2 And Col1 <> 250 Then Col1 = Col1 + 10
If C3 = 2 And Col3 <> 250 Then Col3 = Col3 + 10
If c2 = 2 And Col2 <> 250 Then Col2 = Col2 + 10
' الاحتفاظ باللون السابق ثم تغيير اللون
OldColor = Me.ForeColor
Me.ForeColor = RGB(Col1, Col2, Col3)
' الاحتفاظ بالخط السابق ثم تغيير الخط
Set OldFont = Me.Font
Set Me.Font = Label1.Font
' مسح الرسوميات السابقة من النافذة
Me.Cls
' تحديد موقع النص الأول و طباعته
Me.CurrentX = Label1.Left
Me.CurrentY = Label1.Top
Me.Print Label1.Caption
' تحديد موقع النص الصاني و طباعته
Me.CurrentX = Label2.Left
Me.CurrentY = Label2.Top
Me.Print Label2.Caption
' تحديد موقع النص الثالث و طباعته
Me.CurrentX = Label3.Left
Me.CurrentY = Label3.Top
Me.Print Label3.Caption
' استعادة الخط و اللون الأصليين للنافذة
Set Me.Font = OldFont
Me.ForeColor = OldColor
نرجو الاستفادة و السلام.
بِسْمِ اللهِ الرَّحْمَنِ الرَّحِيمِ ( وَ مَا تُقَدِّمُوا لِأَنفُسِكُم مِّنْ خَيْرٍ تَجِدُوهُ عِندَ اللهِ هُوَ خَيْراً وَ أَعْظَمَ أَجْراً ) صَدَقَ اللهُ الْعَظِيمُ
