首页 > 解决方案 > 椭圆变成长方形

问题描述

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

在此处输入图像描述

所以我需要保留它,所以我重绘它(使用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;
            }
        }

}

这在 Canvass 绘画方法中调用。但这会发生。椭圆变成了矩形。

在此处输入图像描述

我如何添加形状

    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;
        }
    }

标签: c#shapes

解决方案


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;
            }
        }

更改了要切换的变量。


推荐阅读