C# GDI Drawing2D Ajuda
Pergunta
Quais métodos de GDI posso usar para desenhar a forma azul mostrada na imagem abaixo? O centro deve ser transparente.
Solução
Existem várias maneiras, mas você provavelmente desejará usar o seguinte:
FillRectangle
FillPolygon
DrawLine
Uma vez que parece que sua forma pode ser reduzida a um retângulo e dois polígonos e depois descrita por algumas linhas.
Aqui está um exemplo realmente simples e codificado do que eu estava pensando:
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))
...
Outras dicas
Estou assumindo o GDI+ aqui aka system.drawing namespace.
A melhor coisa a fazer é olhar para o sistema.drawing.drawing2d.graphicsPath Classe:
http://msdn.microsoft.com/en-us/library/system.drawing.drawing2d.graphicsPath.aspx
Você precisa fechar o caminho para obter o efeito oco.
Não seria mais fácil desenhá -lo usando um bitmap? É para isso que eles são de qualquer maneira :).