Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Ho creato un pulsante che chiaramente ha forma regolare.
Vorrei mettere come Background del pulsante una PNG che non ha forma regolare e ha la trasparenza.
Purtroppo dove c'è la trasparenza non vedo la Form ma il colore del pulsante.
Possibile usare la trasparenza della PNG?
Si.
Cosa deve trasparire? sul Form c'è un'immagine di sfondo?
Le strade sono due:
1) catturi la parte del form che il button copre in una bitmap in ram, sovrapponi alla bitmap il PNG, poi metti il risultato in Button1.BackgroundImage
2) invece del button metti una picturebox, in PictureBox1.BackgroundImage metti la parte del fom che la pictuerbox copre, in PictureBox1.Image carichi il PNG.
Bisogna solo calcolare un po' di coordinate, scegli il metodo se non riesci ti posto un esempio.
Ultima modifica effettuata da Carlo il 05/10/2020 alle 21:14
Bravo, per coloro che si imbattono in questo post, posto un esempio per ottenere un bottone o una picturebox che sembra trasparente.
Nel form caricate una immagine di sfondo
Aggiungete una PictureBox1 e un Button1 con Visible=false
nella cartella dell'applicazione mettete un PNG con trasparenza della dimensione che dovrà avere il button o picturebox
Le coordinate che catturano lo schermo potrebbero differire da quelle che ho inserito, esse dipendono dal S.O. e dal tema della finestra, possono essere aggiustate modificando i valori di OffSet
In allegato progetto completo VS, con Click animato su Picturebox, nella cartella Resources immagini di esempio
Codice sorgente - presumibilmente VB.NET
Imports System.IO
PublicClass Form1
DimWithEvents Timer1 As System.Windows.Forms.Timer
PrivateSub Form1_Load(sender AsObject, e As EventArgs)HandlesMyBase.Shown
Button1.Visible=False' dobbiamo copiare quello che c'è sotto
PictureBox1.Visible=False' dobbiamo copiare quello che c'è sotto
Timer1.Interval=300' attesa che il form sia completamente visualizzato
Timer1.Enabled=True
EndSub
PrivateSub Timer1_Tick(sender AsObject, e As EventArgs)Handles Timer1.Tick
Ma bisogna capire esattamente il problema dove sta.
Se imposti la trasparenza "Dal Form" aka Transparency Key
Avrai un buco ovviamente, tranne se in seguito il controllo viene gestito diversamente dal draw.
Testo quotato
Vorrei mettere come Background del pulsante una PNG che non ha forma regolare e ha la trasparenza.
Purtroppo dove c'è la trasparenza non vedo la Form ma il colore del pulsante.
Possibile usare la trasparenza della PNG?
Ci sono due sistemi.
Se il form ha un solo colore come fondo
usa questo
Ma bisogna capire esattamente il problema dove sta.
Se imposti la trasparenza "Dal Form" aka Transparency Key
Avrai un buco ovviamente, tranne se in seguito il controllo viene gestito diversamente dal draw.
Testo quotato
Vorrei mettere come Background del pulsante una PNG che non ha forma regolare e ha la trasparenza.
Purtroppo dove c'è la trasparenza non vedo la Form ma il colore del pulsante.
Possibile usare la trasparenza della PNG?
Non avevo interpretato la domanda di fosforo come voler ottenere un bottone con una foma ricavata da un png su uno sfondo uniforme.
Thejuster ha creato un controllo tutto nuovo, bello...
Per fare un bottone con un PNG o meglio due PNG, uno cliccato e uno rilasciato userei una picturebox:
In allegato progetto, nella cartella debug, due png disegnati al volo.
Comunque da Thejuster c'è sempre da imparare, non conoscevo .MakeTransparent, che è un metodo più "sbrigativo"
Per contorni di bassa qualità o rettangolari, va più che bene, ma con PNG con trasparenze antialiased variegate, rendere solo un colore trasparente ne degrada la qualità in modo inaccettabile.
Nel mio post precedente ho allegato un progetto: PictureBoxLoadFile.zip, dove si nota la qualità del contorno antialiased