1

我正在尝试绘制一个 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 像素的弧,然后完成绘图回到左上角。

4

1 回答 1

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

这让你:

在此处输入图像描述

于 2012-08-14T12:07:31.943 回答