Рисование железнодорожных изгибов с использованием DrawArc (C # OOP) - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь создать приложение для Windows Forms, где я могу нарисовать прямоугольник с изгибом в нем.Как и в следующем примере:

bend example

Я использовал объектно-ориентированное программирование для написания классов с использованием диаграммы классов.

 class SpoorRailsKrom : SpoorElement
{
    protected RailsRotatie rotatie;
    public SpoorRailsKrom(Orientatie orientatie, int breedte, int grootte, int x, int y) : base(orientatie, breedte, grootte, x, y)
    {
    }
    public override void Teken(Graphics g)
    {
        if (g != null)
        {
            //TODO: Draw Rails using rotatie (angle)
            base.Teken(g);

            g.DrawArc(Pens.Black, 5, 5, 100, 100, 0, 90);
            g.DrawArc(Pens.Black, 10, 10, 100, 100, 0, 90);

        }
    }
}

В «Teken» -метод я хочу нарисовать изгибы с различными поворотами (от 0 до 90, от 90 до 180, от 180 до 270 и от 270 до 360 (0)), используя перечисление (rotatie).

namespace EindopdrachtOOP_Spoorbaan

enum RailsRotatie
{
    _0,
    _90,
    _180,
    _270
}

Я также написалкласс SpoorElement для рисования прямоугольника, в котором должен быть выполнен изгиб.

 abstract class SpoorElement
{
    protected int breedte, grootte, x, y;
    protected Orientatie orientatie;

    public Orientatie Orientatie
    {
        set
        {
            orientatie = value;

        }
        get
        {
            return orientatie;
        }
    }

    public SpoorElement(Orientatie orientatie, int breedte, int grootte, int x, int y)
    {
        this.orientatie = Orientatie.Horizontaal;
        this.breedte = 100;
        this.grootte = 100;
        this.x = 5;
        this.y = 5;
    }

    public virtual void Teken(Graphics g)
    {
        if (g != null)
        {
            //Brush brush = new SolidBrush(Color.Black);
            Pen pen = new Pen(Color.Black);
            g.DrawRectangle(pen, x, y, breedte, grootte);
        }
    }
}

Это дает мне следующий вывод:

bend

Мой вопрос:

Как я могу изменить угол, на котором он будет рисовать изгиб, как в примере (первое изображение)?

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