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 void ToPenTest() { Pen pen = new Pen(Color.FromArgb(255, 0, 0, 0)); PaintPen paintPen = new PaintPen(pen); Pen actualPen = paintPen.ToPen(); Assert.AreSame(pen, actualPen); }
public void ConstructorPaintColorTest() { PaintColor paintColor = new PaintColor(40, 20, 30, 35); PaintPen paintPen = new PaintPen(paintColor); Pen actualPen = paintPen.ToPen(); Assert.AreEqual(paintColor.A, actualPen.Color.A); Assert.AreEqual(paintColor.R, actualPen.Color.R); Assert.AreEqual(paintColor.G, actualPen.Color.G); Assert.AreEqual(paintColor.B, actualPen.Color.B); }
public override void Draw(PaintGraphics graphics) { (int x, int y, int width, int height) = CalculateRoundRect(); graphics.MySmoothingMode = EPaintSmoothingMode.AntiAlias; PaintPen pen = new PaintPen(Color, Thickness); pen.LineJoin = EPainLinejoin.Round; PaintRectangleF rect = new PaintRectangleF(x, y, width, height); PaintGraphicsPath path = this.GetRoundRectangle(rect, radius); graphics.DrawPath(pen, path); }