Эллипс превращается в прямоугольник - PullRequest
0 голосов
/ 21 сентября 2018

Когда я пытаюсь нажать Да и Принять фигуру, она помещается в список фигур

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

}

Это вызывается в методе рисования Canvass,Но это происходит.Эллипс преобразуется в прямоугольник.

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 голосов
/ 21 сентября 2018
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;
            }
        }

Изменена переменная для переключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...