VB6 - Efectuarea unei forme transparente
Noțiuni de bază
Iată un scurt exemplu despre cum să faceți o formă transparentă în Visual Basic.Notă: Trebuie să includă o paletă de culori pentru ca aceasta să funcționeze.
Într-un modul
Funcția privată de declare GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd cât mai lung, ByVal nIndex la fel de lung)Funcția privată declară SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd atât de lung, ByVal nIndex ca lung, ByVal dwNewLong la fel de lung)
Funcția de declare privată SetLayeredWindowAttributes Lib "user32" (ByVal hWnd cât mai lung, ByVal crKey la fel de lung, ByVal bDefaut ca byte, ByVal dwFlags cât de lung)
Constă privată GWL_EXSTYLE Pe termen lung = (-20)
Constă privată LWA_COLORKEY As Long = & H1
Private Const LWA_Defaut ca lung = & H2
Constrat privat WS_EX_LAYERED As Long = & H80000
'
Transparența funcțiilor publice (ByVal hWnd cât mai lung, opțional ByVal Col As Long = vbBlack, _
Opțional ByVal PcTransp ca octet = 255, ByVal TrMode opțional ca boolean = adevărat) Ca boolean
'Return: Adevărat dacă nu există nici o eroare.
În partea de jos a ferestrei pentru a face transparente
'Col: Culoare pentru a deveni transparent dacă TrMode = False
'PcTransp: 0 Ã 255 >> 0 = transparent -: - 255 = Opac
Dim DisplayStyle la fel de lung
La eroare Ieșiți la ieșire
VoirStyle = GetWindowLong (hWnd, GWL_EXSTYLE)
Dacă DisplayStyle (DisplayStyle sau WS_EX_LAYERED) Apoi
DisplayStyle = (DisplayStyle sau WS_EX_LAYERED)
Apelați SetWindowLong (hWnd, GWL_EXSTYLE, DisplayStyle)
Terminați Dacă
Transparență = (SetLayeredWindowAttributes (hWnd, Col, PcTransp, IIf (TrMode, LWA_COLORKEY sau LWA_Defaut, LWA_COLORKEY)) 0)
Ieșire:
Dacă Not Err.Number = 0 Apoi Err.Clear
Terminați funcția
Public Sub ActiveTransparency (M ca formă, d ca boolean, F ca boolean, _
T_Transparență ca intreg, culoare opțională la fel de lungă)
Dim B ca boolean
Dacă d Și F Apoi
"Face culoarea (aici culoarea de fundal a formei) transparentă
"la valoarea T_Transparență
B = Transparență (M.hWnd, Culoare, T_Transparență, Falsă)
Altfel, atunci
"Face ca formularul, inclusiv toate componentele, să fie transparent
"la valoarea T_Transparență
B = Transparență (M.hWnd, 0, T_Transparență, True)
altfel
"Restabilește forma opacă.
B = Transparență (M.hWnd,, 255, True)
Terminați Dacă
End Sub
Așa cum se utilizează într-o formă
Private Sub Form_Load ()Dim i ca intreg
Ex: toate transparente la raportul 140/255
'ActiveTransparency Me, Adevărat, Fals, 140, Me.BackColor
Ex: Formați o componentă transparentă, vizibilă la raportul 140/255
'ActiveTransparency Me, Adevărat, Adevărat, 140, Me.BackColor
"Exemplu afișează degradarea transparenței formularului
ActiveTransparency Me, Adevărat, Fals, 0
Me.Show
Pentru i = 0 Pentru 255 Pasul 3
ActiveTransparency Me, Adevărat, Fals, i
Me.Refresh
Apoi eu
End Sub