bonhomeExamJanvier/Bonhomme02/Peau.cs

220 lines
6.3 KiB
C#
Raw Permalink Normal View History

2018-01-03 13:18:01 +01:00
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
{
2018-01-05 15:45:35 +01:00
public Point coordonnee; // Les coordonée du point seront basé sur le millieux des dessin pour facilité les rotations !
2018-01-04 11:34:30 +01:00
public Vecteur epaisseur;
public Vecteur longueur;
public Peau parent = null;
2018-01-03 13:18:01 +01:00
public Peau() : base()
{
}
public Peau(PictureBox hebergeur) : base(hebergeur)
{
}
2018-01-04 14:03:06 +01:00
public Peau(PictureBox hebergeur, double lg, double ep, double angle) : base(hebergeur)
{
InitVecteurs(lg, ep, angle);
2018-01-05 15:45:35 +01:00
coordonnee = new Point();
2018-01-04 14:03:06 +01:00
}
2018-01-05 15:45:35 +01:00
public Peau(PictureBox hebergeur, int xy) : base(hebergeur)
2018-01-03 13:18:01 +01:00
{
2018-01-05 15:45:35 +01:00
coordonnee = new Point(xy,xy);
2018-01-03 13:18:01 +01:00
}
2018-01-05 15:45:35 +01:00
public Peau(PictureBox hebergeur, int x, int y, double lg, double ep, double angle) : base(hebergeur)
2018-01-03 13:18:01 +01:00
{
InitVecteurs(lg, ep, angle);
2018-01-05 15:45:35 +01:00
coordonnee = new Point(x, y);
2018-01-03 13:18:01 +01:00
}
2018-01-05 15:45:35 +01:00
public Peau(PictureBox hebergeur, ref Peau parent, double lg, double ep, double angle) : base(hebergeur)
2018-01-04 11:34:30 +01:00
{
this.parent = parent;
InitVecteurs(lg, ep, angle);
2018-01-05 15:45:35 +01:00
coordonnee = new Point();
2018-01-03 13:18:01 +01:00
}
2018-01-04 11:34:30 +01:00
/*(0;0)
* #---------------------------------------->x
* | Coordonee
* | CIG | CID
* | #********#********#
* | *<-------|------->*
* | * -epai. |epaiseur*
* | * l| *
* | * o| *
* | * n| *
* | * g| *
* | * u| *
* | * e| *
* | * u| *
* | * r| *
* | * \/ *
* | #*****************#
* | CSG CSD
2018-01-09 20:19:49 +01:00
* |
2018-01-04 11:34:30 +01:00
* \/
* y
*/
2018-01-03 13:18:01 +01:00
#region accesseur
2018-01-04 11:34:30 +01:00
2018-01-05 15:45:35 +01:00
public virtual Point Coordonnee
2018-01-04 11:34:30 +01:00
{
get
{
if (parent != null)
{
2018-01-04 14:03:06 +01:00
return parent.Coordonnee+parent.longueur;
2018-01-04 11:34:30 +01:00
}
else
2018-01-05 15:45:35 +01:00
return coordonnee;
2018-01-04 11:34:30 +01:00
}
2018-01-05 15:45:35 +01:00
set
{
if (parent != null)
{
Console.WriteLine("Un enfant ne peut modifier ces coordonée !");
}
else
{
coordonnee = value;
}
}
}
public int X
{
get { return Coordonnee.X; }
2018-01-09 20:19:49 +01:00
set
{
Coordonnee = new Point(value, Coordonnee.Y);
}
2018-01-05 15:45:35 +01:00
}
public int Y
{
get { return Coordonnee.Y; }
2018-01-09 20:19:49 +01:00
set
{
Coordonnee = new Point(Coordonnee.X, value);
}
2018-01-04 11:34:30 +01:00
}
2018-01-05 01:51:12 +01:00
public double Angle
{
get
{
return longueur.Angle;
}
set
{
epaisseur.Angle = value; //Pour que le parent de eppaiseur soit mis a jour
2018-01-05 16:28:13 +01:00
//Si on met longueur, epaisseur ne sera pas mis a jour
2018-01-05 01:51:12 +01:00
}
}
2018-01-04 14:03:06 +01:00
2018-01-04 11:34:30 +01:00
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; }}
2018-01-03 13:18:01 +01:00
#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)
2018-01-03 13:18:01 +01:00
{
if(base.Visible)
{
try
{
Graphics gr = Graphics.FromHwnd(handle);
Point[] l = new Point[4] { CIG, CID, CSD, CSG };
2018-01-04 11:34:30 +01:00
if (base.Remplir )
2018-01-03 13:18:01 +01:00
{
gr.FillClosedCurve(new SolidBrush(base.Fond), l);
2018-01-09 20:19:49 +01:00
2018-01-03 13:18:01 +01:00
}
gr.DrawClosedCurve(new Pen(base.Crayon), l);
2018-01-03 13:18:01 +01:00
}
catch
{
}
}
}
public virtual void Cacher(IntPtr handle)
2018-01-03 13:18:01 +01:00
{
try
{
if (base.Visible && 1 == 1)
{
Graphics gr = Graphics.FromHwnd(handle);
2018-01-04 11:34:30 +01:00
Point[] l = new Point[4] { CIG, CID, CSD, CSG };
2018-01-03 13:18:01 +01:00
if (base.Remplir)
{
gr.FillClosedCurve(new SolidBrush(base.Hebergeur.BackColor), l);
2018-01-03 13:18:01 +01:00
}
gr.DrawClosedCurve(new Pen(base.Hebergeur.BackColor), l);
2018-01-03 13:18:01 +01:00
}
}
catch
{
}
}
2018-01-09 20:19:49 +01:00
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
{
}
}
2018-01-03 13:18:01 +01:00
#endregion
}
}