2010-03-14 5 views

Répondre

0

Pas si compliqué, un exemple rapide ... Je n'ai pas inclus les contrôles ici.

Graphics g = null; // initialize in Form_Load with this.CreateGraphics() 
    Point lastPoint; 

    private void Form1_MouseDown(object sender, MouseEventArgs e) 
    { 
     lastPoint = e.Location; 
    } 

    private void Form1_MouseMove(object sender, MouseEventArgs e) 
    { 
     if (e.Button == MouseButtons.Left) 
     { 
      g.DrawLine(Pens.Blue, lastPoint, e.Location); 
      lastPoint = e.Location; 
     } 
    } 

    private void Form1_MouseUp(object sender, MouseEventArgs e) 
    { 

    } 

Ce qui précède est un exemple pour montrer comment dessiner un formulaire. Idéalement, vous devez placer toutes les coordonnées de ligne dans une collection et dessiner en utilisant DrawLines(). Ensuite, utilisez Graphics :: DrawLines() dans le formulaire :: OnPaint. Lorsque vous cliquez sur le bouton droit de la souris, effacez la collection de points et forcez un redessin.

0

En fin de compte, vous voudrez peut-être contenir tout le dessin/effacement action dans un contrôle spécifique et gérer sa réactualisation/état de infirmation de manière cohérente, mais la réponse de A9S6 va sûrement vous aider à démarrer et profiter GDI + dessin;)

1

Exemple qui tire la ligne et utilise le lieu pour la peinture correspond le:

public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     List<Point> points = new List<Point>(); 

     private void Form1_MouseMove(object sender, MouseEventArgs e) 
     { 
      if (e.Button == MouseButtons.Left) 
      { 
       points.Add(e.Location); 

       Invalidate(); 
      } 
     } 

     private void Form1_Paint(object sender, PaintEventArgs e) 
     { 
      if (points.Count > 2) 
      { 
       e.Graphics.DrawLines(Pens.Black, points.ToArray()); 
      } 
     } 
    } 

le ToArray() n'est pas très agréable quand la liste obtient longtemps cependant.

Questions connexes