Page d'acceuil

Informatique > C# > Exemples simples

Programme de dessin à main levée:

La propriété d'antialiasing a été activée, comme on peut le voir en agrandissant l'image:

L'utilisateur peut choisir la couleur du tracé. Il peut dessiner dans un pictureBox en déplaçant la souris.

Voici le début de la déclaration de la classe Form1. En gras, les champs et propriétés ajoutées:

public class Form1 : System.Windows.Forms.Form
{
/// <summary>
/// Variable nécessaire au concepteur.
/// </summary>
private System.ComponentModel.Container components = null;
private System.Windows.Forms.PictureBox picBoard;
private bool bMouseDown = false; // bouton appuyé
private System.Windows.Forms.Label label1;
private System.Windows.Forms.ColorDialog DlgColor;
private System.Windows.Forms.Button btnColor;
private Point OldPos = new Point(-1,-1); // position précédente
private System.Windows.Forms.Panel PnlPenColor;
  // Propriété Couleur du stylo
  private Color fPenColor = Color.Red; // initialisation
  public Color PenColor {
    get {
      return fPenColor;
    }
    set {
      fPenColor = value;
      PnlPenColor.BackColor = value;
    }
  }
....             

Voici le code proprement dit permettant de dessiner (tout à fait classique):

private void pictureBox1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) {
bMouseDown = true;
picBoard.Capture = true;
}
private void picBoard_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e) {
  bMouseDown = false;
  picBoard.Capture = false;
  OldPos = new Point(-1,-1);
}
private void picBoard_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) {
  if (bMouseDown){
    Graphics g = picBoard.CreateGraphics();
    g.SmoothingMode = SmoothingMode.AntiAlias;                        // mode antialiasing
    Pen pen = new Pen(PenColor,3);                                    // couleur courante, épaisseur 3
    if (OldPos!=new Point(-1,-1)){
      g.DrawLine(pen,OldPos,new Point(e.X,e.Y));                      // tracé de la ligne
    };
    OldPos = new Point( e.X, e.Y ); 
  };
}
private void button1_Click(object sender, System.EventArgs e) {
  DlgColor.Color = PenColor;
  if (DlgColor.ShowDialog() == DialogResult.OK)
    PenColor = DlgColor.Color;                                       // nouvelle couleur de dessin
}