Справка по C # GDI Drawing2D
Вопрос
Какие методы GDI я могу использовать, чтобы нарисовать синюю фигуру, показанную на изображении ниже?Центр должен быть прозрачным.
Решение
Существует несколько способов, но вы, вероятно, захотите использовать следующий:
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
Вам нужно убедиться, что вы закрыли контур, чтобы получить эффект пустоты.
Не проще ли было бы нарисовать это с помощью растрового изображения?В любом случае, для этого они и предназначены :).