使用DrawArc(C#OOP)绘制火车轨道弯曲

时间:2018-10-18 13:02:08

标签: c# oop graphics

我正在尝试构建一个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))的折弯。

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

我的问题是:

如何像示例(第一个图像)一样改变它将绘制弯曲的角度?

0 个答案:

没有答案