1

我可以使用哪些 GDI 方法来绘制下图所示的蓝色形状?中心必须是透明的。

替代文字

4

3 回答 3

1

有多种方法,但您可能希望使用以下方法:

FillRectangle
FillPolygon
DrawLine

因为看起来你的形状可以缩小为一个矩形和两个多边形,然后用几条线勾勒出来。

这是我在想的一个非常简单且硬编码的示例:

Private Sub Control_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) _
Handles MyBase.Paint
    Dim g As Graphics = e.Graphics

    g.FillRectangle(Brushes.Aqua, New Rectangle(10, 10, 10, 90))
    g.FillPolygon(Brushes.Aqua, New Point() { _
        New Point(10, 10), _
        New Point(20, 10), _
        New Point(40, 50), _
        New Point(30, 50)})
    g.FillPolygon(Brushes.Aqua, New Point() { _
        New Point(10, 100), _
        New Point(20, 100), _
        New Point(40, 50), _
        New Point(30, 50)})
    g.DrawLine(Pens.Black, New Point(10, 10), New Point(10, 100))
    g.DrawLine(Pens.Black, New Point(10, 100), New Point(20, 100))
    g.DrawLine(Pens.Black, New Point(20, 100), New Point(40, 50))
    g.DrawLine(Pens.Black, New Point(40, 50), New Point(20, 10))
    g.DrawLine(Pens.Black, New Point(20, 10), New Point(10, 10))

...

于 2010-03-30T21:07:05.410 回答
0

我在这里假设 GDI+ 又名 System.Drawing 命名空间。

最好的办法是查看 System.Drawing.Drawing2d.GraphicsPath 类:

http://msdn.microsoft.com/en-us/library/system.drawing.drawing2d.graphicspath.aspx

您需要确保关闭路径以获得空心效果。

于 2010-03-30T21:06:12.637 回答
-1

使用位图绘制它不是更容易吗?无论如何,这就是他们的目的:)。

于 2010-03-30T21:32:20.923 回答