الشفافية
اولا يجب ان نتعرف على الدالة SetLayeredWindowAttributes وهى احدى دوال الــ ِA P I
* تعريف الدالة
Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
من المفترض ان اى نافذة تتكون من 255 طبقة شفافة ووجود هذة الطبقات المتراكبة ينتج النافذة المعتمة التى نراها
كما يمكن ان نختار لون يصبح شفاف تماما
والان نناقش ثوابت هذة الدالة
1 -hWnd تتحد النافذة التى سنجرى عليها العملية فلو اردنا ال form1 اذا فلنجعل له القيمة form1.hwnd
2 - Crkey تحدد لون اذا وجد على الفورم يصبح شفاف تماما
3 - Balpha تحدد عدد الطبقات التى تريدها ان تكون الفورم ومن ثم تحديد درجة الشفافية
4 - Dwflags تحدد نوع الفعل فمثلا اذا اردت الشفافية حسب عدد الطبقات تأخذ القيمة
Const LWA_ALPHA = &H2
اما اذا اردت ان تحدد لون يصبح شفاف تماما تأخذ القيمة
Const LWA_COLORKEY = &H1
مثال " شاشة الالعاب الاولمبية"
نقوم بعمل مديول Mudeol
أو في التعريف العام للفورم General
ضع الكود التالي
Const LWA_COLORKEY = &H1 Const LWA_ALPHA = &H2 Const GWL_EXSTYLE = (-20) Const WS_EX_LAYERED = &H80000 Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long Dim Ret As Long Dim r As Integer Function cir(xposition, yposition, radius, fast, density) pi = 4 * Atn(1) no = 200 * density: l = radius m = 2 * pi / no x0 = xposition: y0 = yposition For i = 0 To no X = l * Sin(m * i): y = l * Cos(m * i) X = x0 + X: y = y0 - y Line (X - 30, y - 30)-(X, y), RGB(50, 10, 250) For j = 1 To fast * 100: Next j Next i End Function
وفي حدث التحميل Form_Load نضع الكود التالي ....
Private Sub Form_Load() Me.BackColor = 0 Me.WindowState = 2 Ret = GetWindowLong(Me.hWnd, GWL_EXSTYLE) Ret = Ret Or WS_EX_LAYERED SetWindowLong Me.hWnd, GWL_EXSTYLE, Ret SetLayeredWindowAttributes Me.hWnd, 0, 128, LWA_COLORKEY End Sub
وفي حدث البوينت للفورم Form_Paint نضع الكود التالي .
Private Sub Form_Paint() r = 2 * 567 For i = 1 To 3 cir 2 * r * i, 2 * r, r, 50, 50 DoEvents Next i cir 3 * r, 3.7 * r, r, 50, 50 cir 5 * r, 3.7 * r, r, 50, 50 For i = 1 To 255 Step 5 SetLayeredWindowAttributes Me.hWnd, RGB(30, 30, 30), i, LWA_ALPHA Next i End Sub



![29_09_05_02_32_59_1128029579_4_13_3[_].gif](http://www.arabteam2000.com/picload/pics/29_09_05_02_32_59_1128029579_4_13_3%5B_%5D.gif)
