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()); } }
public override void Draw(PaintGraphics graphics) { graphics.DrawLine( new PaintPen(new PaintSolidBrush(Color), Thickness), Location.X, Location.Y, FinishLocation.X, FinishLocation.Y); }
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); } } }