Newsgroup: it.comp.lang.visual-basic
Titolo: Frame trasparente e picture

Ciao a tutti,
    so che l'argomento è stato già trattato + volte e guardando su google ho
visto decine di post sull'argomento... ma purtroppo non capisco xche a me
non fanno effetto...
Vi spiego il problema... ho un form classico dove ho 1 frame che raggruppa
una serie di controlli testo e label. A seconda di dove richiamo questo form
il frame è attivo o no o visibile o no...
Cmq volevo mettere un'immagine di sfondo x renderlo + carino... e come molti
avranno già visto se metti la picture cotto a un frame il frame mantiene il
suo colore grigio e l'immagine non la vedo +... vedo solo i bottoni esterni
al frame.
Ora sapete voi come fare? anche usando un ocx diverso (ho provato il frame
che fa parte dei Form 2.0 ma non mi piace) free disegnato da qualcun altro
che mantenga la stessa grafica del frame attuale(bordi, label sopra,
raggruppamento campi, etc.) ma che permetta lo sfondo trasparente. Possibile
che nessuno l'abbia mai disegnato???
1000 Grazie!!!


guardati i post di Dicembre, ho regalato al news una funzione che fa 
quello che cerchi.
ciao max
PS :fa una ricerca con il mio nik e guarda un post che comincia con ohh 
cicci ....
Te la posterei adesso se potessi, ma è roba vecchissima che non ho più 
nel server.

 nel server.
Te lo posto qui sotto con le aggiunte del caso e mi dici cosa manca xche a
me non funziona:
In un form chiamato Form1 aggiungo una Picture1 e un Frame1 ... Ma appena
avvio il prog il frame non è trasparente.
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, _
    ByVal x As Long, ByVal y 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 CombineRgn Lib "gdi32" (ByVal hDestRgn As Long,
ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long)
As Long
Private Declare Function DeleteObject Lib "gdi32" _
    (ByVal hObject As Long) As Long
Private Sub Form_Load()
Dim a As Long
    a = MakeTrans(Picture1)
End Sub
Private Function MakeTrans(picSource As PictureBox) As Long
   Dim lRetr As Long, _
       lHeight As Long, _
       lWidth As Long, _
       lColor As Long, _
       lRgnFinal As Long, _
       lRgnTmp As Long, _
       lStart As Long, _
       lRow As Long, _
       lCol As Long
   lColor = GetPixel(picSource.hdc, 0, 0)
   lHeight = picSource.Height / Screen.TwipsPerPixelY
   lWidth = picSource.Width / Screen.TwipsPerPixelX
   lRgnFinal = CreateRectRgn(0, 0, 0, 0)
   For lRow = 0 To lHeight - 1
     lCol = 0
     Do While lCol < lWidth
       Do While lCol < lWidth And GetPixel(picSource.hdc, lCol, lRow) =
lColor
         lCol = lCol + 1
       Loop
       If lCol < lWidth Then
         lStart = lCol
         Do While lCol < lWidth And GetPixel(picSource.hdc, lCol, lRow) <>
lColor
           lCol = lCol + 1
         Loop
         If lCol > lWidth Then lCol& = lWidth
         lRgnTmp = CreateRectRgn(lStart, lRow, lCol, lRow + 1)
         lRetr = CombineRgn(lRgnFinal, lRgnFinal, lRgnTmp, RGN_OR)
         DeleteObject (lRgnTmp)
       End If
     Loop
   Next
   MakeTrans = lRgnFinal
 End Function