C # GDI Drawing2D помощь - PullRequest
       46

C # GDI Drawing2D помощь

1 голос
/ 31 марта 2010

Какие методы GDI я могу использовать, чтобы нарисовать синюю фигуру, показанную на рисунке ниже? Центр должен быть прозрачным.

alt text

Ответы [ 3 ]

1 голос
/ 31 марта 2010

Есть несколько способов, но вы, вероятно, захотите использовать следующее:

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

...

1 голос
/ 31 марта 2010

Я предполагаю, что GDI + здесь aka System.Drawing namespace.

Лучше всего взглянуть на класс System.Drawing.Drawing2d.GraphicsPath:

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

Вам необходимо убедиться, что вы закрыли путь, чтобы получить эффект пустоты.

0 голосов
/ 31 марта 2010

Не проще ли нарисовать его с помощью растрового изображения? Это то, что они в любом случае:).

...