Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Sfondo Form con immagine e trasparenza
lunedì 17 ottobre 2005 - 17.13
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
D79
Profilo
| Junior Member
67
messaggi | Data Invio:
lun 17 ott 2005 - 17:13
Quello che vorrei fare è semplice: una form che invece di essere 'quadrata' ha per sfondo un'immagine dagli angoli smussati.
Ho letto che ci sono problemi di trasparenza per chi ha un color-depth>24 bit.
Ho cercato di risolvere la cosa in mille modi ma niente.
Possibile che non si possa fare?
Ho provato così:
FormBorederStyle=none
Backgroundimage= una png con sfondo trasparente
oppure:
FormBorederStyle=none
una picturebox con sfondo l'immagine con sfondo trasparente
da codice: me.TransparencyKey=BackColor
o tanti altri modi che non sto a dire.......
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mar 18 ott 2005 - 14:29
Ciao,
allora vediamo un po', tu vorresti costruire una Form che abbia una dimensione diversa dal rettangolo classico è esatto ?
In questo caso è possibile ma non credo con le strade che hai tentato tu. Ci sono infatti delle API apposite che ti consentono di definire un'area della Form. Quindi puoi fare Form triangolari, circolari o anche forme irregolari.
Se è questo che ti interessa fammi sapere che ti cerco le API apposite perchè ora a memoria non le ricordo.
Ciao
David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/
D79
Profilo
| Junior Member
67
messaggi | Data Invio:
mer 19 ott 2005 - 18:15
no, vorrei proprio inserire un'immagine di sfondo.
----
il mio sito:
http://it.geocities.com/chuck_dust/
palomo2
Profilo
| Newbie
16
messaggi | Data Invio:
ven 18 nov 2005 - 11:07
Creati l'area a partire da un immagine usando le region .... ecco una bella classe in VB:
http://www.thescarms.com/dotnet/IrregularForm.asp
Anche io mi sto interessando alle finestre irregolari e sono riuscito anche a crearne in c# con le region ma resta ancora il problema del resize e in giro nn sono riuscito a trovare nessun aiuto in merito .....se ci dovessi riuscire fammi sapere
agocam
Profilo
| Newbie
1
messaggi | Data Invio:
mar 13 dic 2005 - 17:23
Ciao,
per creare una form non rettangolare devi creare una region ed associarla al tuo form.
Prova questo codice e fammi sapere ciao.
FileStream imageStream = File.OpenRead("nomefileimmagine");
Bitmap imageBackground = (Bitmap)Bitmap.FromStream(imageStream);
//prelevo il colore trasparente dal primo pixel della bitmap
Color transparentColor = imageBackground.GetPixel( 1,1 );
// Chiamo una funzione che converte i colori trasparenti della bitmap
this.Region = RegionConvert.ConvertBitmap(imageBackground, transparentColor);
La funzione che converte la bitmap è la seguente:
public unsafe static Region ConvertBitmap( Bitmap bitmap, Color transparencyKey)
{
GraphicsUnit unit = GraphicsUnit.Pixel;
RectangleF boundsF = bitmap.GetBounds( ref unit );
Rectangle bounds = new Rectangle( (int)boundsF.Left, (int)boundsF.Top,
(int)boundsF.Width, (int)boundsF.Height );
uint key = (uint)((transparencyKey.A << 24) | (transparencyKey.R << 16) |
(transparencyKey.G << 8) | (transparencyKey.B << 0));
BitmapData bitmapData = bitmap.LockBits( bounds, ImageLockMode.ReadOnly,
PixelFormat.Format32bppArgb );
uint* pixelPtr = (uint*)bitmapData.Scan0.ToPointer();
int yMax = (int)boundsF.Height;
int xMax = (int)boundsF.Width;
GraphicsPath path = new GraphicsPath();
for ( int y = 0; y < yMax; y++ )
{
byte* basePos = (byte*)pixelPtr;
for ( int x = 0; x < xMax; x++, pixelPtr++ )
{
if ( *pixelPtr == key )
continue;
int x0 = x;
while( x < xMax && !( *pixelPtr == key ) )
{
++x;
pixelPtr++;
}
path.AddRectangle( new Rectangle( x0, y, x-x0, 1 ) );
}
pixelPtr = (uint*)(basePos + bitmapData.Stride);
}
Region region = new Region( path );
path.Dispose();
bitmap.UnlockBits( bitmapData );
return region;
}
and87
Profilo
| Newbie
46
messaggi | Data Invio:
mar 11 nov 2008 - 16:05
Ciao Brainkiller, io invece vorrei fare proprio la cosa detta da te..Cioè ridisegnare la form con angoli non "originali".
Mi troveresti le API per favore?
Grazie
Torna su
Stanze Forum
Elenco Threads
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 !