تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
منع إهتزاز الشّاشة
#8
السلام عليكم و رحمة الله و بركاته...

عندما يتطلب الأمر تغيير النصوص و الألوان و الرسومات على الشاشة بشكل متكرر فإن استعمال أوامر الرسوميات (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
Col2Col3 As Integer
    Static c1
c2C3 As Integer
    If 
(Col1 Or Col1 250) And (Col2 Or Col2 250_
    And 
(Col3 Or Col3 250Then
    c1 
Int(Rnd 3)
 
   c2 Int(Rnd 3)
 
   C3 Int(Rnd 3)
 
   End If
 
   If c2 And Col2 <> 0 Then Col2 Col2 10
    If C3 
And Col3 <> 0 Then Col3 Col3 10
    If c1 
And Col1 <> 0 Then Col1 Col1 10
    If c1 
And Col1 <> 250 Then Col1 Col1 10
    If C3 
And Col3 <> 250 Then Col3 Col3 10
    If c2 
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 

نرجو الاستفادة و السلام.
بِسْمِ اللهِ الرَّحْمَنِ الرَّحِيمِ ( وَ مَا تُقَدِّمُوا لِأَنفُسِكُم مِّنْ خَيْرٍ تَجِدُوهُ عِندَ اللهِ هُوَ خَيْراً وَ أَعْظَمَ أَجْراً ) صَدَقَ اللهُ الْعَظِيمُ
الرد }}}


الردود في هذا الموضوع
RE: منع إهتزاز الشّاشة - بواسطة Ahmed_Mansoor - 11-04-16, 02:23 AM
RE: منع إهتزاز الشّاشة - بواسطة Ahmed_Mansoor - 11-04-16, 09:10 AM
RE: منع إهتزاز الشّاشة - بواسطة Ahmed_Mansoor - 11-04-16, 09:01 PM
RE: منع إهتزاز الشّاشة - بواسطة ناجي إبراهيم - 12-04-16, 06:15 AM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم