【问题标题】:Adding an arc to a rectangle using GraphicsPath使用 GraphicsPath 向矩形添加圆弧
【发布时间】:2012-08-10 16:42:10
【问题描述】:

我正在尝试绘制一个 IC 封装的俯视图,它应该看起来像这样(抱歉,我什至无法使用 windows 的油漆将它画得足够好!)

我正在使用路径对象,但我的路径对象的结果与我期望的相差甚远。至少完整的矩形本身画得很好,但我无法制作您在示例图片中看到的顶部弧线。如果您能指出我正确的地方,那就太好了。这是我的代码:

    private GraphicsPath DrawDilBounds(Size size)
    {
        var p = new GraphicsPath(FillMode.Alternate);
        p.StartFigure();
        p.AddLine(0, 0, 0, size.Height);
        p.AddLine(0, size.Height, size.Width, size.Height);
        p.AddLine(size.Width, size.Height, size.Width, 0);
        p.AddLine(size.Width, 0, (size.Width/2) - 10, 0);
        p.AddArc(size.Width/2 - 10, 0, 10, 10, 10, 10); //This arc looks like no arc!
        p.AddLine((size.Width/2) + 10, 0, 0, 0);
        p.CloseFigure();

        return p;
    }

所以我在这里做的是从左上角开始一些线,到左下角,到右下角,最后到右上角,然后我添加了一条从右上角到顶部中间的线,负10像素,然后我想添加宽度为20像素的弧,然后完成绘图回到左上角。

【问题讨论】:

    标签: c# winforms graphics 2d graphicspath


    【解决方案1】:

    您通过边界框指定弧。使用 10 作为半径给出一个 20 x 20(您使用 10 x 10)的框,其左上角位于距圆弧中心(-10, -10)处(您使用 (-10, 0))。最后两个参数必须是 degrees,即开始和结束角度。由于您从左到右绘制它,这将是 0 度和 180 度(您使用了 10 和 10)。您还摸索了顶部两条线的长度,它们应该是宽度 -10 的一半(您使用了 +10)。修复:

            p.AddLine(size.Width, 0, (size.Width / 2) + 10, 0);
            p.AddArc(size.Width / 2 - 10, -10, 20, 20, 0, 180);
            p.AddLine((size.Width / 2) - 10, 0, 0, 0);
    

    这让你:

    【讨论】:

    • 对汉斯的帮助,我永远感激不尽!我想我 90% 的声誉只是因为将您的回复标记为答案!
    猜你喜欢
    • 2018-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多