Bonjour,
Mon application permet de dessiner des objets dans une frame.
Le but c'est de dessiner des cercles dans une région, puis récupérer leurs coordonnées dans la région en question.
Par exp :
Je dessine 10 cercle (objet), chaque cercle est stocké dans une ArrayList, et je cherche à récupérer les coordonnées de chaque objet suite à un événement (click, autres,...) afin de déplacer/supprimer l'objet cliqué.
J'espère que je suis claire
voici une partie de mon code :
événement dessiner :
privatevoid OnMouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
PointCourant = new Point(e.X, e.Y);
if((Math.Pow((e.X-255.5),2)+(Math.Pow((e.Y-255.5),2)))<Math.Pow(242.5,2))
{
sapinDoc.Add(new Forme(TypeForme,CouleurForme,new System.Drawing.Rectangle(PointCourant, TailleForme)));
Invalidate();
}
}
elseif (e.Button == System.Windows.Forms.MouseButtons.Right)
{
PointCourant = new Point(e.X, e.Y);
//Pointfinal = new Point(240,240);
//Pointfinal = new Point(Coor_d_ellipse.Rect.Location.X, Coor_d_ellipse.Rect.Location.X);
foreach(Sapin.Forme forme in sapinDoc.listeFormes )
{
if (forme.EstDans(PointCourant) == true)
{
//Déplacer la forme
//Redessiner la forme
contextMenu1.Show(Sapin.MainFrame.ActiveForm , PointCourant);
Invalidate();
break;
}
}
}
}
autre classe :
publicclass Forme
{
private TypeFormeEnum typeForme;
public TypeFormeEnum TypeForme
{
get
{
return typeForme;
}
set
{
typeForme = value;
}
}
private Color couleur;
public Color Couleur
{ get {return couleur;} set {couleur =value;} }
private System.Drawing.Rectangle rect;
public System.Drawing.Rectangle Rect
{ get {return rect;} set {rect = value;}}
public Forme (TypeFormeEnum typeF , Color co , System.Drawing.Rectangle re)
{ TypeForme = typeF;
couleur = co;
rect = re; }
publicvoid Draw(System.Drawing.Graphics gr)
{
System.Drawing.Pen pen = new System.Drawing.Pen (couleur);
switch(TypeForme)
{
case TypeFormeEnum.rectangle:
gr.DrawRectangle(pen , rect);
break;
case TypeFormeEnum.ellipse:
gr.DrawEllipse(pen , rect);
SolidBrush brush = new SolidBrush(Color.LightSteelBlue);
gr.DrawEllipse(pen,rect);
gr.FillEllipse(brush,rect);
break;
case TypeFormeEnum.triangle:
{
Point[] pts =
{
new Point(rect.Left, rect.Bottom),
new Point(rect.Right, rect.Bottom),
new Point((rect.Left + rect.Right)/2, rect.Top)
};
gr.DrawPolygon(pen,pts);
}
break;
}
pen.Dispose();
}
public bool EstDans(Point p)
{returnthis.rect.Contains(p);}
}
autre classe :
publicclass DocumentSapin
{
public ArrayList listeFormes;
public ArrayList listeCoordonnees;
public Point p;
public DocumentSapin()
{
listeFormes = new ArrayList();
listeCoordonnees = new ArrayList();
}
publicvoid Add(Forme forme)
{
if (listeFormes.Count<20)
{listeFormes.Add(forme);
listeCoordonnees.Add(forme.Rect.Contains(p));}
}
publicvoid Draw(System.Drawing.Graphics gr)
{
foreach (Sapin.Forme forme in listeFormes)
{
forme.Draw(gr);
}
}
}
RED1

