使用GraphicsPath将弧添加到矩形

时间:2012-08-14 11:38:50

标签: c# winforms graphics 2d graphicspath

我试图绘制一个IC封装的顶视图,它看起来应该是这样的(对不起,我甚至无法使用windows的油漆画得好!)

enter image description here

我正在使用路径obeject,但是我的路径对象的结果不在我预期的附近。至少完整的矩形本身画得很好,但我有问题,使你在我的示例图片中看到的顶部弧。如果你能把我指向正确的地方会很好。这是我的代码:

    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像素的圆弧,然后将绘图完成回到左上角。

1 个答案:

答案 0 :(得分:3)

您可以通过边界框指定弧。使用10作为半径给出一个20 x 20(使用10 x 10)的框,其左上角位于距弧中心(-10,-10)处(使用(-10,0))。最后两个参数必须是,即起始和结束角度。因为你从左到右绘制它将是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);

哪个可以帮到你:

enter image description here