Traçage d'une ligne entre deux cercles crées?

MonalizaFst Messages postés 4 Date d'inscription jeudi 18 mars 2010 Statut Membre Dernière intervention 18 avril 2010 - 18 mars 2010 à 21:30
MonalizaFst Messages postés 4 Date d'inscription jeudi 18 mars 2010 Statut Membre Dernière intervention 18 avril 2010 - 18 avril 2010 à 20:03
Bonsoir à tous,
j'ai créé une interface qui cotient 2 boutons:cercle et ligne quand je clique sur le bouton cercle et sur un endroit de la fenetre elle se créé une cercle , je voudrai savoir maintenant comment je peut faire pour tracer une ligne entre chaque deux cercles créés de telle façon que quand je clique sur le bouton ligne puis sur le cercle(ou' j'ai dejà fait le cliquement sur la fenetre pour le dessin de cercle) sans relacher la souris et je me déplace un trait se forme du point ou j'ai cliqué jusqu'au pointeur de ma souris (au niveau de la 2eme cercle) et quand je lache le bouton de la souris le trait est dessiner.
Je besoin de votre aide svp!
Merci d'avance.

2 réponses

yohan49 Messages postés 380 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 13 août 2011 8
21 mars 2010 à 05:34
tu fais un array contenant tous les object ( cercle , ligne , courbes ect )

et tu les repeinds tous a chaque event OnPaint

il te faut une classe pour chaque type de form que tu veux creer sur ton panel , contenant , les point d'origine , la couleur ect

c un gros taff :)

bon courrage
0
MonalizaFst Messages postés 4 Date d'inscription jeudi 18 mars 2010 Statut Membre Dernière intervention 18 avril 2010
18 avril 2010 à 20:03
j'ai arriver à trouver une partie du solution le traçage du ligne se fait juste un petit truc c'est que quand je clique aussi sur la formulaire il se traçe mais moi je cherche que le traçage se fait seulement suit à un clique sur le bouton Line.
Je sais pas vraiment comment faire et comment corriger mon code je serai reconnaissante si quelqu'un peut m'aider.
Voilà le code:
namespace Project
{
  public partial class Form1 : Form
  {
        
     public Form1()
      {
        InitializeComponent();
        CercleButton.Click += new EventHandler(CercleButton_Click_1);
       LineButton.Click += new EventHandler(LineButton_Click);
      this.MouseDown += new MouseEventHandler(im.clsLine_OnMouseDown);
      this.MouseMove += new MouseEventHandler(im.clsLine_OnMouseMove);
      this.MouseUp += new MouseEventHandler(im.clsLine_OnMouseUp);
        }
    private void CercleButton_Click_1(object sender, EventArgs e)
   {
     this.MouseClick += new MouseEventHandler(Form1_MouseClick);
   }
       private  void Form1_MouseClick(object sender, MouseEventArgs e)
       {
               this.MouseClick -= new MouseEventHandler(Form1_MouseClick);
               drawCircle(e.X, e.Y);     
            }
           private void drawCircle(int x, int y)
            {
                Graphics g;
                g = CreateGraphics();
                Rectangle myRectangle = new Rectangle(x, y, 50, 50);
                Pen myPen = new Pen(Color.Blue, 2);
                SolidBrush sb1 = new SolidBrush(Color.BlanchedAlmond); 
                g.FillEllipse(sb1, myRectangle);
                g.DrawEllipse(myPen, myRectangle);
                g.Dispose(); //libération de l'objet graphique
            }
            public class clsLine
            {
              Point ps = new Point();   // ps est le point start
              Point pe = new Point();  // pe le point end
              public clsLine();           //constructeur de classe
              {
 
              }
           public void clsLine_OnMouseDown(Object sender, MouseEventArgs e)
          {
              ps.X = e.X;
              ps.Y = e.Y;
              pe = ps;       
          }                
                            
         public void clsLine_OnMouseMove(Object sender, MouseEventArgs e)
        {
           if (e.Button == MouseButtons.Left)
           {
             Form thisform = (Form)sender;
            ControlPaint.DrawReversibleLine(thisform.PointToScreen(ps), thisform.PointToScreen(pe), Color.Black);
            pe = new Point(e.X, e.Y);
ControlPaint.DrawReversibleLine(thisform.PointToScreen(ps), thisform.PointToScreen(pe), Color.Black);
 
                    }
                } 
   public void clsLine_OnMouseUp(Object sender, MouseEventArgs e)
   {
     Form thisform = (Form)sender;
     Graphics g = thisform.CreateGraphics();
     Pen p = new Pen(Color.Blue, 2);
    ControlPaint.DrawReversibleLine(thisform.PointToScreen(ps),  thisform.PointToScreen(pe), Color.Black);
          g.DrawLine(p, ps, pe);
           g.Dispose();
    }
 
    private void LineButton_Click_1(object sender, EventArgs e)
    {
     
    }
 
  }  
 }
}       
 
0