Ejemplo n.º 1
0
        private void InscribePolygon(PaintGraphics graphics, PaintRectangleF rectangle, int numSides)
        {
            float       Radius = (float)((double)Math.Min(rectangle.Width, rectangle.Height) / 2.0);
            ShapePointF Center = new ShapePointF(
                (float)(rectangle.Location.X + rectangle.Width / 2.0),
                (float)(rectangle.Location.Y + rectangle.Height / 2.0));
            PaintRectangleF rectangleF = new PaintRectangleF(Center, new ShaipSizeF(1, 1));

            rectangleF.Inflate(Radius, Radius);

            float Sides         = (float)numSides;
            float ExteriorAngle = (float)360 / Sides;
            float InteriorAngle = (Sides - (float)2) / Sides * (float)180;
            float SideLength    = (float)2 * Radius * (float)Math.Sin(Math.PI / (double)Sides);

            for (int i = 1; i <= Sides; i++)
            {
                graphics.ResetTransform();
                graphics.TranslateTransform(Center.X, Center.Y);
                graphics.RotateTransform((i - 1) * ExteriorAngle);
                graphics.TranslateTransform(0, -Radius);
                graphics.RotateTransform(180 - InteriorAngle / 2);
                graphics.MySmoothingMode = EPaintSmoothingMode.AntiAlias;
                PaintPen pen = new PaintPen(Color, Thickness);
                pen.StartCap = EPaintLineCap.Round;
                pen.EndCap   = EPaintLineCap.Round;
                graphics.DrawLine(
                    pen,
                    new ShapePointF(0, 0).ToPointF(),
                    new ShapePointF(0, -SideLength).ToPointF());
            }
        }
Ejemplo n.º 2
0
 public override void Draw(PaintGraphics graphics)
 {
     graphics.DrawLine(
         new PaintPen(new PaintSolidBrush(Color), Thickness),
         Location.X,
         Location.Y,
         FinishLocation.X,
         FinishLocation.Y);
 }
Ejemplo n.º 3
0
 public override void Draw(PaintGraphics graphics)
 {
     if (_points.Count > 1)
     {
         for (int i = 0; i < _points.Count - 1; i++)
         {
             graphics.DrawLine(new PaintPen(new PaintSolidBrush(Color), Thickness), _points[i], _points[i + 1]);
         }
         foreach (ShapePoint point in _points)
         {
             graphics.MySmoothingMode = EPaintSmoothingMode.AntiAlias;
             graphics.FillEllipse(new PaintSolidBrush(Color),
                                  point.X - Thickness / 2,
                                  point.Y - Thickness / 2,
                                  Thickness,
                                  Thickness);
         }
     }
 }