Pergunta

Quais métodos de GDI posso usar para desenhar a forma azul mostrada na imagem abaixo? O centro deve ser transparente.

alt text

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top