예제 #1
0
        public static void DrawShape(Graphics gfx, RectangleF area, Shapes shape, Boolean randomWithin, Boolean isfilled)
        {
            Shapes trueshape = shape;

            if (trueshape == Shapes.RandomShape)
            {
                trueshape = GetRandomShape();
            }

            RectangleF rect = area;

            if (randomWithin)
            {
                float x      = Rando.RandomFloat(area.X, area.X + area.Width);
                float y      = Rando.RandomFloat(area.Y, area.Y + area.Height);
                float width  = Rando.RandomFloat(1, area.Width);
                float height = Rando.RandomFloat(1, area.Height);
                rect = new RectangleF(x, y, width, height);
            }

            if (trueshape == Shapes.Square || trueshape == Shapes.Circle)
            {
                rect.Width  = Math.Min(rect.Width, rect.Height);
                rect.Height = rect.Width;
            }

            using (var brush = new SolidBrush(Rando.RandomColor()))
                using (var pen = new Pen(brush, Rando.RandomFloat(0.5f, 10.0f)))
                {
                    switch (trueshape)
                    {
                    case Shapes.Circle:
                    case Shapes.Ellipse:
                        DrawEllipse(gfx, brush, pen, rect, isfilled);
                        break;

                    default:
                    {
                        PointF[] points = GeneratePoints(trueshape, rect);
                        DrawPolygon(gfx, brush, pen, points, isfilled);
                    }
                    break;
                    }
                }
        }