using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Bonhomme02 { class Peau : BaseDessin { public Point coordonnee; // Les coordonée du point seront basé sur le millieux des dessin pour facilité les rotations ! public Vecteur epaisseur; public Vecteur longueur; public Peau parent = null; public Peau() : base() { } public Peau(PictureBox hebergeur) : base(hebergeur) { } public Peau(PictureBox hebergeur, double lg, double ep, double angle) : base(hebergeur) { InitVecteurs(lg, ep, angle); coordonnee = new Point(); } public Peau(PictureBox hebergeur, int xy) : base(hebergeur) { coordonnee = new Point(xy,xy); } public Peau(PictureBox hebergeur, int x, int y, double lg, double ep, double angle) : base(hebergeur) { InitVecteurs(lg, ep, angle); coordonnee = new Point(x, y); } public Peau(PictureBox hebergeur, ref Peau parent, double lg, double ep, double angle) : base(hebergeur) { this.parent = parent; InitVecteurs(lg, ep, angle); coordonnee = new Point(); } /*(0;0) * #---------------------------------------->x * | Coordonee * | CIG | CID * | #********#********# * | *<-------|------->* * | * -epai. |epaiseur* * | * l| * * | * o| * * | * n| * * | * g| * * | * u| * * | * e| * * | * u| * * | * r| * * | * \/ * * | #*****************# * | CSG CSD * | * \/ * y */ #region accesseur public virtual Point Coordonnee { get { if (parent != null) { return parent.Coordonnee+parent.longueur; } else return coordonnee; } set { if (parent != null) { Console.WriteLine("Un enfant ne peut modifier ces coordonée !"); } else { coordonnee = value; } } } public int X { get { return Coordonnee.X; } set { Coordonnee = new Point(value, Coordonnee.Y); } } public int Y { get { return Coordonnee.Y; } set { Coordonnee = new Point(Coordonnee.X, value); } } public double Angle { get { return longueur.Angle; } set { epaisseur.Angle = value; //Pour que le parent de eppaiseur soit mis a jour //Si on met longueur, epaisseur ne sera pas mis a jour } } public virtual Point CIG{ get{ return Coordonnee - epaisseur; }} public virtual Point CID{ get{ return Coordonnee + epaisseur; }} public virtual Point CSG{ get{ return (Coordonnee - epaisseur) + longueur; }} public virtual Point CSD{ get{ return (Coordonnee + epaisseur) + longueur; }} #endregion #region methode private void InitVecteurs(double lg, double ep, double angle) { this.longueur = new Vecteur(lg, angle); this.epaisseur = new Vecteur(ep, ref this.longueur, true); } public virtual void Afficher(IntPtr handle) { if(base.Visible) { try { Graphics gr = Graphics.FromHwnd(handle); Point[] l = new Point[4] { CIG, CID, CSD, CSG }; if (base.Remplir ) { gr.FillClosedCurve(new SolidBrush(base.Fond), l); } gr.DrawClosedCurve(new Pen(base.Crayon), l); } catch { } } } public virtual void Cacher(IntPtr handle) { try { if (base.Visible && 1 == 1) { Graphics gr = Graphics.FromHwnd(handle); Point[] l = new Point[4] { CIG, CID, CSD, CSG }; if (base.Remplir) { gr.FillClosedCurve(new SolidBrush(base.Hebergeur.BackColor), l); } gr.DrawClosedCurve(new Pen(base.Hebergeur.BackColor), l); } } catch { } } public virtual void Afficher(Graphics gr) { if(base.Visible) { try { Point[] l = new Point[4] { CIG, CID, CSD, CSG }; if (base.Remplir ) { gr.FillClosedCurve(new SolidBrush(base.Fond), l); } gr.DrawClosedCurve(new Pen(base.Crayon), l); } catch { } } } public virtual void Cacher(Graphics gr) { try { if (base.Visible && 1 == 1) { Point[] l = new Point[4] { CIG, CID, CSD, CSG }; if (base.Remplir) { gr.FillClosedCurve(new SolidBrush(base.Hebergeur.BackColor), l); } gr.DrawClosedCurve(new Pen(base.Hebergeur.BackColor), l); } } catch { } } #endregion } }