Вопрос

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

alt text

Это было полезно?

Решение

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

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

...

Другие советы

Я предполагаю, что GDI + здесь он же System.Пространство имен для рисования.

Лучшее, что можно сделать, это посмотреть System.Drawing.Drawing2d.Класс GraphicsPath :

http://msdn.microsoft.com/en-us/library/system.drawing .чертеж2d.графический путь.aspx

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top