Sei sulla pagina 1di 3

25/mar/2010

ildilettante.blogspot.com
gldm

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



Torniamo a Visual Studio: sulla form principale,
impostiamo la proprietà BackgroundImage cari-
cando l’immagine scelta; dimensioniamo la form
Click here to send your feedback

 sulla dimensione dell’immagine. Lasciamo la pro-


selezioniamo Applicazione Windows Form. prietà BackgroundImageLayout a None (non
 cedete alla tentazione di impostarla a Stretch: ini-
Ora ci serve un’immagine da usare come sfondo birebbe la trasparenza dell’applicazione a runtime).
della nostra finestra: nel nostro esempio scegliamo 
una PNG con sfondo trasparente: 

joliprint
Printed with

http://ildilettante.blogspot.com/2010/03/finestre-inusuali-in-c-windows-form.html

Page 1
25/mar/2010
ildilettante.blogspot.com

Finestre insolite in C#


Adesso impostiamo la proprietà TrasparencyKey
al colore di sfondo della form (ovvero, nel nostro
caso, Control):


 L’ultimo passo da compiere è la gestione del trasci-
Ora impostiamo la proprietà FormBorderStyle a namento e della chiusura della nostra form: aggiun-
None, in questo modo rimuoviamo la barra del ti- giamo alle using l’assembly InteropServices:
tolo ed i bordi della form. 
 using System.Runtime.InteropServices;

...e incolliamo all’interno della classe il seguente
codice:

Click here to send your feedback

public const int WM_NCLBUTTONDOWN = 0xA1;


public const int HT_CAPTION = 0x2;

[DllImportAttribute(«user32.dll»)]
public static extern int SendMessage(IntPtr hWnd,
int Msg, int wParam, int lParam);
[DllImportAttribute(«user32.dll»)]
public static extern bool ReleaseCapture();

Infine gestiamo l’evento MouseDown, sia per il tras-
joliprint

cinamento della form col tasto sinistro del mouse,


sia per chiudere l’applicazione con il tasto destro
(ricordiamo che manca la barra del titolo, con i pul-
santi di chiusura, riduzione e ingrandimento):
Printed with


private void Form1_MouseDown(object sender,
MouseEventArgs e)

http://ildilettante.blogspot.com/2010/03/finestre-inusuali-in-c-windows-form.html

Page 2
25/mar/2010
ildilettante.blogspot.com

Finestre insolite in C#

{
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(Handle, WM_NCLBUTTONDOWN,
HT_CAPTION, 0);
}
else
{
Close();
}
}

Abbiamo finito! Compiliamo ed eseguiamo l’appli-
cazione: ecco la nostra finestra dall’aspetto insolito...


Click here to send your feedback
joliprint
Printed with

http://ildilettante.blogspot.com/2010/03/finestre-inusuali-in-c-windows-form.html

Page 3