椭圆变换为矩形

时间:2018-09-21 01:19:20

标签: c# shapes

当我尝试单击“是”并接受“形状”时,它将被推送到“形状”列表中

enter image description here

因此,我需要保留所有内容,以便使用以下方法重新绘制它(使用foreach遍历形状列表/集合):

public void DrawAllShapes(object sender, PaintEventArgs e)
    {
        foreach(Shape shape in _shapes)
        {
            switch (s.type)
            {
                case Shape.ShapeType.rectangle:
                    shape.DrawRectangle(shape.color, shape.strokeThickness, shape.points, shape.width, shape.height, e.Graphics);
                    break;
                case Shape.ShapeType.square:
                    shape.DrawSquare(shape.color, shape.strokeThickness, shape.points, shape.width, shape.height, e.Graphics);
                    break;
                case Shape.ShapeType.circle:
                    shape.DrawCircle(shape.color, shape.strokeThickness, shape.points, shape.width, shape.height, e.Graphics);
                    break;
                case Shape.ShapeType.ellipse:
                    shape.DrawEllipse(shape.color, shape.strokeThickness, shape.points, shape.width, shape.height, e.Graphics);
                    break;
                case Shape.ShapeType.triangle:
                    shape.DrawTriangle(shape.color, shape.strokeThickness, shape.tPoints.ToArray(), shape.x, shape.y, shape.width, e.Graphics);
                    break;
            }
        }

}

这在“画布”绘画方法中称为。 但是,这发生了。椭圆变成矩形。

enter image description here

我如何添加形状

    public void AcceptShape()
    {
        switch (buttons)
        {
            case Shape.ShapeType.rectangle:
                var rect = new Shape{
                    strokeThickness = strokeRect, 
                    color = rC,
                    points = new Point((int)rX,(int)rY),
                    width = rW,
                    height = rH,
                    type = (Shape.ShapeType)System.Enum.Parse(typeof(Shape.ShapeType), "rectangle")
                };
                draw._shapes.Add(rect);
                Data();
                break;
            case Shape.ShapeType.square:
                var square = new Shape {
                    strokeThickness = strokeSquare,
                    color = sC,
                    points = new Point((int)sX, (int)sY),
                    width = sW,
                    height = sH,
                    type = (Shape.ShapeType)System.Enum.Parse(typeof(Shape.ShapeType), "square")
                };
                draw._shapes.Add(square);
                Data();
                break;
            case Shape.ShapeType.circle:
                var circle= new Shape {
                    strokeThickness = strokeCircle,
                    color = cC,
                    points = new Point((int)cX, (int)cY),
                    width = cW,
                    height = cH,
                    type = (Shape.ShapeType)System.Enum.Parse(typeof(Shape.ShapeType), "circle")
                };
                draw._shapes.Add(circle);
                Data();
                break;
            case Shape.ShapeType.ellipse:
                var ellipse = new Shape {
                    strokeThickness = strokeEllipse,
                    color = eC,
                    points = new Point((int)eX, (int)eY),
                    width = eW,
                    height = eH,
                    type = (Shape.ShapeType)System.Enum.Parse(typeof(Shape.ShapeType), "ellipse")
                };
                draw._shapes.Add(ellipse);
                Data();
                break;
            case Shape.ShapeType.triangle:
                var triangle = new Shape{
                    strokeThickness = strokeTriangle,
                    color = tC,
                    tPoints = t_Points.ToArray(),
                    x=tX,
                    y=tY,
                    width = tW,
                    type = (Shape.ShapeType)System.Enum.Parse(typeof(Shape.ShapeType), "triangle")
                };
                draw._shapes.Add(triangle);
                triangleClicked = false;
                Data();
                break;
        }
    }

1 个答案:

答案 0 :(得分:1)

foreach(Shape shape in _shapes)
        {
            switch (shape.type)
            {
                case Shape.ShapeType.rectangle:
                    shape.DrawRectangle(shape.color, shape.strokeThickness, shape.points, shape.width, shape.height, e.Graphics);
                    break;
                case Shape.ShapeType.square:
                    shape.DrawSquare(shape.color, shape.strokeThickness, shape.points, shape.width, shape.height, e.Graphics);
                    break;
                case Shape.ShapeType.circle:
                    shape.DrawCircle(shape.color, shape.strokeThickness, shape.points, shape.width, shape.height, e.Graphics);
                    break;
                case Shape.ShapeType.ellipse:
                    shape.DrawEllipse(shape.color, shape.strokeThickness, shape.points, shape.width, shape.height, e.Graphics);
                    break;
                case Shape.ShapeType.triangle:
                    shape.DrawTriangle(shape.color, shape.strokeThickness, shape.tPoints.ToArray(), shape.x, shape.y, shape.width, e.Graphics);
                    break;
            }
        }

已更改变量以进行切换。