Ciao a tutti,
e' possibile rendere una form trasparente ???
(Voi direte SIIII) , ma io vorrei che i pulsanti, bottoni etc, siano visibili ...
Spero di essere stato chiaro nello spiegare il mio problema
Grazie a tutti
Filippo
Ciao a tutti,
e' possibile rendere una form trasparente ???
(Voi direte SIIII) , ma io vorrei che i pulsanti, bottoni etc, siano visibili ...
Spero di essere stato chiaro nello spiegare il mio problema
Grazie a tutti
Filippo
Ciao. Anch'io sto ho esattamente il tuo stesso problema. Però, cercando in rete, ho trovato questo codice:
Per funzionare, funziona. Solo che io avrei bisogno che anche lo sfondo della label del mio form fosse trasparente e non basta impostarecodice:Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long Private Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long Private Declare Function CreateRoundRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long Private Declare Function ReleaseCapture Lib "user32" () As Long Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long Private Const RGN_OR = 2 Private Const RGN_DIFF = 4 Private Const WM_NCLBUTTONDOWN = &HA1 Private Const HTCAPTION = 2 Private Sub EffettoVetro(EffettoVetroB As Boolean) 'Attenzione! ecco alcuni suggerimenti per il corretto funzionamento. 'consiglio di impostare ScaleMode su 3 -Pixel direttamente in fase progettuale Dim Larghezza As Long, Altezza As Long Dim posControlloLeft, posControlloTop Dim i As Integer Dim r As Long Dim scostamento As Long Dim InternoForm As Long Dim diffaltezza As Long Dim difflarghezza As Long Larghezza = ScaleX(Width, vbTwips, vbPixels) Altezza = ScaleY(Height, vbTwips, vbPixels) 'se il bordo del form non è impostato su none c'è una discrepanza 'tra altezza e larghezza effettive con altezza e larghezza del form difflarghezza = (Larghezza - ScaleWidth) / 2 diffaltezza = Altezza - difflarghezza - ScaleHeight If EffettoVetroB = False Then Regione = CreateRectRgn(0, 0, Larghezza, Altezza) SetWindowRgn hwnd, Regione, True Exit Sub End If Regione = CreateRectRgn(0, 0, 0, 0) If EffettoVetroB = True Then InternoForm = CreateRectRgn(0, 0, Larghezza, Altezza) CombineRgn Regione, InternoForm, InternoForm, RGN_DIFF End If ' Combina regioni dei controlli nel form On Local Error Resume Next 'alcuni controlli possono generare errore. Tra questi: 'Gli Shape, Timer, ecc For i = 0 To Me.Controls.Count - 1 posControlloLeft = ScaleX(Me.Controls(i).Left, Me.ScaleMode, vbPixels) + difflarghezza posControlloTop = ScaleX(Me.Controls(i).Top, Me.ScaleMode, vbPixels) + diffaltezza r = CreateRectRgn(posControlloLeft, posControlloTop, posControlloLeft + ScaleX(Me.Controls(i).Width, Me.ScaleMode, vbPixels), posControlloTop + ScaleY(Me.Controls(i).Height, Me.ScaleMode, vbPixels)) CombineRgn Regione, r, Regione, RGN_OR Next Err = 0 SetWindowRgn hwnd, Regione, True End Sub
perchè così il suo sfondo diventa bianco! Se qualcuno ha qualche idea...codice:BackStyle = transparent
Ciao!
Grazie ...
adesso lo provo e ti faccio sapere
Filippo
scusate se riesumo questo vecchio post ma a me questo codice fa sparire completamente il form... c'è qualcosa che funziona?Originariamente inviato da Daniele87
Ciao. Anch'io sto ho esattamente il tuo stesso problema. Però, cercando in rete, ho trovato questo codice:
Per funzionare, funziona. Solo che io avrei bisogno che anche lo sfondo della label del mio form fosse trasparente e non basta impostarecodice:Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long Private Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long Private Declare Function CreateRoundRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long Private Declare Function ReleaseCapture Lib "user32" () As Long Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long Private Const RGN_OR = 2 Private Const RGN_DIFF = 4 Private Const WM_NCLBUTTONDOWN = &HA1 Private Const HTCAPTION = 2 Private Sub EffettoVetro(EffettoVetroB As Boolean) 'Attenzione! ecco alcuni suggerimenti per il corretto funzionamento. 'consiglio di impostare ScaleMode su 3 -Pixel direttamente in fase progettuale Dim Larghezza As Long, Altezza As Long Dim posControlloLeft, posControlloTop Dim i As Integer Dim r As Long Dim scostamento As Long Dim InternoForm As Long Dim diffaltezza As Long Dim difflarghezza As Long Larghezza = ScaleX(Width, vbTwips, vbPixels) Altezza = ScaleY(Height, vbTwips, vbPixels) 'se il bordo del form non è impostato su none c'è una discrepanza 'tra altezza e larghezza effettive con altezza e larghezza del form difflarghezza = (Larghezza - ScaleWidth) / 2 diffaltezza = Altezza - difflarghezza - ScaleHeight If EffettoVetroB = False Then Regione = CreateRectRgn(0, 0, Larghezza, Altezza) SetWindowRgn hwnd, Regione, True Exit Sub End If Regione = CreateRectRgn(0, 0, 0, 0) If EffettoVetroB = True Then InternoForm = CreateRectRgn(0, 0, Larghezza, Altezza) CombineRgn Regione, InternoForm, InternoForm, RGN_DIFF End If ' Combina regioni dei controlli nel form On Local Error Resume Next 'alcuni controlli possono generare errore. Tra questi: 'Gli Shape, Timer, ecc For i = 0 To Me.Controls.Count - 1 posControlloLeft = ScaleX(Me.Controls(i).Left, Me.ScaleMode, vbPixels) + difflarghezza posControlloTop = ScaleX(Me.Controls(i).Top, Me.ScaleMode, vbPixels) + diffaltezza r = CreateRectRgn(posControlloLeft, posControlloTop, posControlloLeft + ScaleX(Me.Controls(i).Width, Me.ScaleMode, vbPixels), posControlloTop + ScaleY(Me.Controls(i).Height, Me.ScaleMode, vbPixels)) CombineRgn Regione, r, Regione, RGN_OR Next Err = 0 SetWindowRgn hwnd, Regione, True End Sub
perchè così il suo sfondo diventa bianco! Se qualcuno ha qualche idea...codice:BackStyle = transparent
Ciao!
con option explicit mi dice che Regione non è stata dichiarata
wlf4ever
prova a mettere "dim regione as long" sotto a questo
codice:Dim i As Integer Dim r As Long Dim scostamento As Long Dim InternoForm As Long Dim diffaltezza As Long Dim difflarghezza As Long