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)
{
}
}
}
}