Disegnare su un Form C#



Per disegnare su un Windows Form in C# bisogna effettuare l’override della funzione OnPaint del form.

In questo articolo vedremo, come esempio, come disegnare una specie di X nel form, che in pratica sarà formata da due linee, una che parte in alto a sinistra e arriva in basso a destra ed una perpendicolare a questa a formare una X.

Vediamo quindi come sarà il metodo OnPaint:

protected override void OnPaint(PaintEventArgs e)
{
//Ricavo l'oggetto Graphics
Graphics g = e.Graphics;
//Costruisco un oggetto Pen impostando il colore nero
Pen pen = new Pen(Color.Black);
//Disegno la prima linea
g.DrawLine(pen, 0, 0, this.ClientSize.Width, this.ClientSize.Height);
//Disegno la seconda linea
g.DrawLine(pen, this.ClientSize.Width, 0, 0, this.ClientSize.Height);
}

Come si può vedere l’oggetto Graphics lo si ricava dall’argomento PaintEventArgs, quindi si costruisce un oggetto Pen e si disegnano le 2 linee usando il metodo DrawLine di Graphics.

Ovviamente tutti questi oggetti sono inclusi nel namespace System.Drawing, quindi bisogna includerlo all’inizio del file tramite la direttiva using:

using System.Drawing;

Se ora proviamo ad eseguire il programma vedremmo la X come volevamo, ma se si prova a fare il resize del form si vedrebbe solamente un pasticci di linee.

Per evitare questo bisogna far effettuare il Refresh() al Form durante il resize. Basta quindi gestire l’event Resize con una funzione del genere:

private void Form1_Resize(object sender, EventArgs e)
{
this.Refresh();

In questo modo ad ogni Resize del form sarà richiamata la funzione OnPaint e la X verrà ridisegnata, assicurandoci sempre una corretta visione.

Annunci sponsorizzati:
Condividi su Facebook Condividi su Twitter!
Pinterest