3
Printed with joliprint ildilettante.blogspot.com Finestre insolite in C# Avreste sempre voluto creare un’applicazione des- ktop con un’interfaccia un po’ inusuale? Una fines- tra di forma rotonda? Bene, seguitemi in questo breve tutorial: iniziamo a creare un’applicazione nuova (le screenshot si riferiscono a Visual Studio 2008): File / Nuovo / Progetto selezioniamo Applicazione Windows Form. Ora ci serve un’immagine da usare come sfondo della nostra finestra: nel nostro esempio scegliamo una PNG con sfondo trasparente: Torniamo a Visual Studio: sulla form principale, impostiamo la proprietà BackgroundImage cari- cando l’immagine scelta; dimensioniamo la form sulla dimensione dell’immagine. Lasciamo la pro- prietà BackgroundImageLayout a None (non cedete alla tentazione di impostarla a Stretch: ini- birebbe la trasparenza dell’applicazione a runtime). 25/mar/2010 Page 1 http://ildilettante.blogspot.com/2010/03/finestre-inusuali-in-c-windows-form.html gldm Click here to send your feedback

Finestre insolite in C#

Embed Size (px)

DESCRIPTION

Tutorial sulla creazione di WinForm con forma non rettangolare

Citation preview

Page 1: Finestre insolite in C#

Prin

ted

wit

hjo

liprin

t

ildilettanteblogspotcom

Finestre insolite in C

Avreste sempre voluto creare unrsquoapplicazione des-ktop con unrsquointerfaccia un porsquo inusuale Una fines-tra di forma rotonda Bene seguitemi in questo breve tutorial iniziamo a creare unrsquoapplicazione nuova (le screenshot si riferiscono a Visual Studio 2008) File Nuovo Progetto

selezioniamo Applicazione Windows Form Ora ci serve unrsquoimmagine da usare come sfondo della nostra finestra nel nostro esempio scegliamo una PNG con sfondo trasparente

Torniamo a Visual Studio sulla form principale impostiamo la proprietagrave BackgroundImage cari-cando lrsquoimmagine scelta dimensioniamo la form sulla dimensione dellrsquoimmagine Lasciamo la pro-prietagrave BackgroundImageLayout a None (non cedete alla tentazione di impostarla a Stretch ini-birebbe la trasparenza dellrsquoapplicazione a runtime)

25mar2010

Page 1

httpildilettanteblogspotcom201003finestre-inusuali-in-c-windows-formhtml

gldm

Clic

k h

ere

to s

end

you

r fe

edb

ack

Prin

ted

wit

hjo

liprin

t

ildilettanteblogspotcom

Finestre insolite in C

Ora impostiamo la proprietagrave FormBorderStyle a None in questo modo rimuoviamo la barra del ti-tolo ed i bordi della form

Adesso impostiamo la proprietagrave TrasparencyKey al colore di sfondo della form (ovvero nel nostro caso Control)

Lrsquoultimo passo da compiere egrave la gestione del trasci-namento e della chiusura della nostra form aggiun-giamo alle using lrsquoassembly InteropServices using SystemRuntimeInteropServices e incolliamo allrsquointerno della classe il seguente codice public const int WM_NCLBUTTONDOWN = 0xA1 public const int HT_CAPTION = 0x2 [DllImportAttribute(laquouser32dllraquo)] public static extern int SendMessage(IntPtr hWnd int Msg int wParam int lParam) [DllImportAttribute(laquouser32dllraquo)] public static extern bool ReleaseCapture() Infine gestiamo lrsquoevento MouseDown sia per il tras-cinamento della form col tasto sinistro del mouse sia per chiudere lrsquoapplicazione con il tasto destro (ricordiamo che manca la barra del titolo con i pul-santi di chiusura riduzione e ingrandimento) private void Form1_MouseDown(object sender MouseEventArgs e)

25mar2010

Page 2

httpildilettanteblogspotcom201003finestre-inusuali-in-c-windows-formhtml

Clic

k h

ere

to s

end

you

r fe

edb

ack

Prin

ted

wit

hjo

liprin

t

ildilettanteblogspotcom

Finestre insolite in C

if (eButton == MouseButtonsLeft) ReleaseCapture() SendMessage(Handle WM_NCLBUTTONDOWN HT_CAPTION 0) else Close() Abbiamo finito Compiliamo ed eseguiamo lrsquoappli-cazione ecco la nostra finestra dallrsquoaspetto insolito

25mar2010

Page 3

httpildilettanteblogspotcom201003finestre-inusuali-in-c-windows-formhtml

Clic

k h

ere

to s

end

you

r fe

edb

ack

Page 2: Finestre insolite in C#

Prin

ted

wit

hjo

liprin

t

ildilettanteblogspotcom

Finestre insolite in C

Ora impostiamo la proprietagrave FormBorderStyle a None in questo modo rimuoviamo la barra del ti-tolo ed i bordi della form

Adesso impostiamo la proprietagrave TrasparencyKey al colore di sfondo della form (ovvero nel nostro caso Control)

Lrsquoultimo passo da compiere egrave la gestione del trasci-namento e della chiusura della nostra form aggiun-giamo alle using lrsquoassembly InteropServices using SystemRuntimeInteropServices e incolliamo allrsquointerno della classe il seguente codice public const int WM_NCLBUTTONDOWN = 0xA1 public const int HT_CAPTION = 0x2 [DllImportAttribute(laquouser32dllraquo)] public static extern int SendMessage(IntPtr hWnd int Msg int wParam int lParam) [DllImportAttribute(laquouser32dllraquo)] public static extern bool ReleaseCapture() Infine gestiamo lrsquoevento MouseDown sia per il tras-cinamento della form col tasto sinistro del mouse sia per chiudere lrsquoapplicazione con il tasto destro (ricordiamo che manca la barra del titolo con i pul-santi di chiusura riduzione e ingrandimento) private void Form1_MouseDown(object sender MouseEventArgs e)

25mar2010

Page 2

httpildilettanteblogspotcom201003finestre-inusuali-in-c-windows-formhtml

Clic

k h

ere

to s

end

you

r fe

edb

ack

Prin

ted

wit

hjo

liprin

t

ildilettanteblogspotcom

Finestre insolite in C

if (eButton == MouseButtonsLeft) ReleaseCapture() SendMessage(Handle WM_NCLBUTTONDOWN HT_CAPTION 0) else Close() Abbiamo finito Compiliamo ed eseguiamo lrsquoappli-cazione ecco la nostra finestra dallrsquoaspetto insolito

25mar2010

Page 3

httpildilettanteblogspotcom201003finestre-inusuali-in-c-windows-formhtml

Clic

k h

ere

to s

end

you

r fe

edb

ack

Page 3: Finestre insolite in C#

Prin

ted

wit

hjo

liprin

t

ildilettanteblogspotcom

Finestre insolite in C

if (eButton == MouseButtonsLeft) ReleaseCapture() SendMessage(Handle WM_NCLBUTTONDOWN HT_CAPTION 0) else Close() Abbiamo finito Compiliamo ed eseguiamo lrsquoappli-cazione ecco la nostra finestra dallrsquoaspetto insolito

25mar2010

Page 3

httpildilettanteblogspotcom201003finestre-inusuali-in-c-windows-formhtml

Clic

k h

ere

to s

end

you

r fe

edb

ack