Nettizzati

Architetture, programmazione, oggetti …

  •  

    Marzo: 2008
    L M M G V S D
         
     12
    3456789
    10111213141516
    17181920212223
    24252627282930
    31  
  • Blog Stats

    • 239 hits

Disegnare con C#

Pubblicato da nettizzati su 17 Marzo , 2008

In questo post vedremo come creare un semplice form all’inteno del quale è possibile disegnare linee tramite il mouse.Quello che vogliamo ottenere è : mi sposto sul form con il mouse, click tasto sinistro (tengo premuto),
muovo il mouse, disegno la linea con gli spostamenti del mouse, rilascio il tasto, finisco di disegnare.

Sostanzialmente vengono gestiti tre eventi: Form2_MouseDown, Form2_MouseUp e Form2_MouseMove.

Tramite una variabile di stato (isDrawing) che imposto a true nell’evento Form2_MouseDown e
imposto a false nell’evento Form2_MouseUp indico quando disegnare e quando no.
Con due variabili istanza (xCurrent,yCurrent) tengo memoria della posizione corrente del mouse e
altre due (xOld, yOld) di quella precedente.

Nell’evento Form2_MouseMove verifico se è possibile disegnare (isDrawing==true),
in caso affermativo,
-leggo la posizione corrente del mouse e la memorizzo in due variabili istanza (xCurrent,yCurrent),
-se sono nella posizione iniziale (click del mouse), memorizzo la posizione corrente (meno un pixel) nelle variabili (xOld, yOld)

-disegno una linea dalla posizione (xOld, yOld) alla posizione (xCurrent,yCurrent)
-memorizzo la posizione corrente (xCurrent,yCurrent) nelle variabili (xOld, yOld)

Di seguito il codice completo:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

public partial class Form2 : Form
{
private bool isDrawing = false;
private int xOld = 0;
private int yOld = 0;private int xCurrent = 0;
private int yCurrent = 0;private System.Drawing.Pen myPen = new Pen(Color.Orange, 2);
private Graphics graphThis;public Form2()
{
InitializeComponent();
graphThis = this.CreateGraphics();
}private void Form2_MouseDown(object sender, MouseEventArgs e)
{
isDrawing = true;
xOld = – 1;
yOld = – 1;

}

private void Form2_MouseUp(object sender, MouseEventArgs e)
{
isDrawing = false;

}

private void Form2_MouseMove(object sender, MouseEventArgs e)
{
if (isDrawing)
{
xCurrent = e.X;
yCurrent = e.Y;
//condizione di avvio
if (xOld == -1 && yOld == -1)
{
xOld = e.X-1;
yOld = e.Y-1;
}

graphThis.DrawLine(myPen, xOld, yOld, xCurrent, yCurrent);
xOld = xCurrent;
yOld = yCurrent;
}
}

}


Lascia un commento

XHTML: Puoi usare questi tag: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>