Dare una forma e imamgine al form

lunedì 30 marzo 2009 - 20.24

sergio.mitrione Profilo | Junior Member

Ciao a tutti,
sapete per caso come cambiare la forma di un form in vb.net?
Per esempio facendogli prendere la forma di un'immagine...

Spero di essermi fatto capire :)

Ciao e grazie a tutti...siete i migliori

Anonimo Profilo | Senior Member

Beh prepari la tua immagine di sfondo, la setti al form e gli dai la proprità FormBorderStyle= None.
Se la forma che vuoi dare al form non è rettangolare devi fare in modo che la tua immagine di sfondo sia all'interno di un immagine rettangolare(o quadrata, a seconda della necessità) che abbia un particolare colore di sfondo, uno che non usi all'interno delle grafiche del programma. Successivamente setti la proprietà TrasparencyKey al valore del colore che hai messo di sfondo all immagine.
Ti allego un immagine di esempio per farti capire:


300x200 35Kb


In questo caso vogliamo creare un form a forma di stella. Ho creato l'immagine a forma di stella e ho messo lo sfondo di quello strano colore che non saprei definire. Ho settato la proprietà TrasparencyKey = al valore esadecimale del colore e voiltà ho ottenuto il form della forma che volevo.


1024x740 92Kb


Ciao!
Riccardo

sergio.mitrione Profilo | Junior Member

Grazie mille Riccardo...la proverò subito...ti faccio sapere

sergio.mitrione Profilo | Junior Member

Ciao Riccardo,
non mi funziona purtroppo...(ho provato con la tua immagine)
ho settato:

-formBorderStyle= none
-messo come sfondo del form l'immagine
-settato la TrasparenceKey a "204; 153; 102" (che sono i valori di sfondo dell'immagine)

Ho dimenticato qualcosa?
Hai per caso un progettino per esempio?

Grazie mille

Anonimo Profilo | Senior Member

se li metti da codice devi impostare:

Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None

Me.TransparencyKey = System.Drawing.Color.FromArgb((DirectCast(((DirectCast((204), Byte))), Integer)), (DirectCast(((DirectCast((153), Byte))), Integer)), (DirectCast(((DirectCast((102), Byte))), Integer)))

Il progetto ce l'ho in c#, se ti può servire lostesso te lo passo ;)

CIao
Riccardo

sergio.mitrione Profilo | Junior Member

Si grazie va bene anche in c#...riesco a vederlo lo stesso

Anonimo Profilo | Senior Member

Ecco a te allora

Fammi sapere

Ciao
Riccardo

sergio.mitrione Profilo | Junior Member

Ciao Riccardo,
ho provato a lanciare il tuo eseguibile per prova ma non me lo fa lo stesso, cioè vedo
il beige di sfondo...
Mi viene il dubbio che abbia qualche impostazione diversa...

Sai per caso da cosa possa dipendere?

Anonimo Profilo | Senior Member

Prova a fare il tutto con una immagine creata da te
Copia il codice hex da un editor grafico e incollalo nel menù delle proprietà sotto la voce TraskarencyKey

Riccardo

sergio.mitrione Profilo | Junior Member

Già provato... ma non capisco come faccia a non funzionare..
La cosa che mi sembra strana è che non funziona neanche il tuo!!!

Gianni77 Profilo | Junior Member

attenzione: per immagine di sfondo non utilizzare una jpg, potrebbe infatti accadere che a causa della compressione, alcune aree di sfondo non sono *esattamente* del colore che credi, utilizza un'immagine GIF e sii sicuro di prelevare il giusto colore di sfondo

Anonimo Profilo | Senior Member

Beh io ho usato una png...
Riccardo

sergio.mitrione Profilo | Junior Member

Ciao,
qua non è tanto il problema o meno del colore di sfondo... prova lanciare l'exe di riccardo dello zip
che ha postato precedentemente... a me non fa la trasparenza...

Gianni77 Profilo | Junior Member

Beh... ovvio.... con GIF,PNG e BMP non si ha il problema degli artefatti che invece hanno le JPG, per questo sconsigliavo l'utilizzo di quel formato. Ho creato un'immagine di prova con photoshop e a me funziona. Come sfondo ho scelto il classico viola FF00FF, impostate le proprietà BackGroundImage sulla mia immagine, FormBorderStyle su None e imposto la trasparenza sull'evento load in questo modo:

Me.TransparencyKey = System.Drawing.Color.FromArgb(255, 0, 255)

il risultato è ok... ottengo un form della "form"A voluta sia in modalità debug che compilata... senza problemi



Gianni77 Profilo | Junior Member

Ho scaricato l'allegato di riccardo e lanciato l'exe... nessun problema... a me il form viene visualizzato correttamente.... a forma di stella, trasparente intorno

sergio.mitrione Profilo | Junior Member

ecco a me no invece... vedo lo sfondo anche

Gianni77 Profilo | Junior Member

Arrivati a questo punto, dato che tutti stiamo visualizzando lo stesso eseguibile... posso soltanto supporre che hai tu qualche problema sul tuo pc... Non so cosa pensare... Forse la versione del .NET framework? Io ho installata la 3.5 SP1

sergio.mitrione Profilo | Junior Member

ho la 3.5... non mi ricordo di aver installato nessun sp

Anonimo Profilo | Senior Member

Ho provato a compilarla sul .net 2 e non ho problemi...
Ti allego il progetto
Riccardo

sergio.mitrione Profilo | Junior Member

domanda stupida....che sistema operativo utilizzate?

Anonimo Profilo | Senior Member

Windows XP Xp3
Riccardo

sergio.mitrione Profilo | Junior Member

allora il problema non è il S.O.

Gianni77 Profilo | Junior Member

Windows XP SP3, .NET Framework 3.5 SP1 e Visual Studio 2008 Express

aiedail92 Profilo | Expert

Ciao, scusate l'intromissione

Volevo solo dire che avevo avuto tempo fa lo stesso problema che ha ora Sergio (che nostalgia, fu il mio primo thread... ), ed ero giunto alla conclusione che era un problema della scheda video, infatti dopo averla sostituita non ci sono stati più problemi... Probabilmente Sergio si trova nella stessa situazione...

Luca

sergio.mitrione Profilo | Junior Member

Ciao Luca,
grazie per il tuo intervento... si probabilmente deve essere più un problema
del pc che del codice... peccato volevo fare una form carina :(
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5