Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [VB6] Rendere picturebox trasparente

    Esiste un modo per fare cio'?
    Boolean aveva fatto un ocx, vorrei sapere il principio di sviluppo, insomma come si fa a fare.
    Se qualcuno puo' aiutarmi gli sarei davvero grato, ciao.

  2. #2

  3. #3

  4. #4
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Per rendere trasparente il controllo Pic (ed altri) si può utilizzare le seguenti funzioni, con l'accortezza che il colore di sfondo dei controlli sia necessariamente bianco, come segue:
    codice:
    Option Explicit
    
    'Il colore iniziale di sfondo dei controlli,
    'per ottenere la trasparenza, deve essere bianco:
    
    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
    ' -----------------------------------------------------------
    Private Sub Form_Load()
    
    Frame1.BackColor = &HFFFFFF
    Dim Ret As Long
        
        Ret = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
        Ret = Ret Or WS_EX_LAYERED
        SetWindowLong Me.hWnd, GWL_EXSTYLE, Ret
        SetLayeredWindowAttributes Me.hWnd, 0, 128, LWA_ALPHA
        SetLayeredWindowAttributes Form1.hWnd, &HFFFFFF, 0, LWA_COLORKEY
    End Sub
    LM

  5. #5
    sperando che mi rendi trasparente solo la picturebox e non il form e altre picturebox sottostanti, lo provero' tra qualche giorno , intanto ti ringrazio per la risposta

  6. #6
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    sperando che mi renda trasparente solo la picturebox e non il form e le altre picturebox ....
    Come ti ho segnalato, il codice rende trasparente la sola (o le sole) PictureBox che ha lo sfondo Bianco.
    Ora se vi sono più controlli Pic sovrapposti, non sò dirti quale possa essere il risultato ... Non ti rimane che provare.
    Ciao.
    LM

  7. #7
    azzz...come credevo rende trasparente anche il form sotto, a me servirebbe rendere trasparente solo il backcolor, e ad esempio se ci disegnassi una linea all'interno vorrei che essa fosse visibile.

    e' tutto cio' possibile?

  8. #8
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Ho capito cosa vuoi dire. Francamente un effetto del genere non l'ho mai visto, anche perchè basterebbe dare il colore di sfondo della Pic uguale a quello della Frm sottostante.
    Il codice postato invece, qualora il colore di sfondo della Pic sia bianco, crea una sorta di finestra trasparente con area uguale a quella della Pic.
    Ciao.
    LM

  9. #9
    la Extra Picture box di boolean aveva appunto questa funzione solo che non ha tutte le funzioni che mi servono, quindi volevo farmi un ocx da solo.
    la cosa di mettere lo stesso bg del form non va bene, senno non cercherei di renderla trasparente

    un'altro problema del tuo codice e' che rende trasparente qualunque cosa bianca sul form, non solo la picturebox

    grazie cmq dell'aiuto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.