Compartilhar via


demarcadores de elementos gráficos no GDI+

Os demarcadores são formados combinando linhas, retângulos e curvas simples. Lembre-se do visão geral de elementos gráficos vetoriais que os seguintes blocos de construção básicos provaram para ser mais útil para desenhar imagens:

  • Linhas

  • Retângulos

  • Elipses

  • Arcos

  • Polígonos

  • Splines cardinais

  • Splines de Bézier

No GDI+, o GraphicsPath objeto permite coletar uma sequência desses blocos de construção em uma única unidade. Toda a sequência de linhas, retângulos, polígonos e curvas pode então ser desenhada com uma chamada para o DrawPathGraphics método da classe. A ilustração a seguir mostra um demarcador criado pela combinação de uma linha, um arco, uma spline de Bézier e uma spline cardinal.

Image of a single-line path, starting from a straight line and continuing into different shapes.

Usando um demarcador

A GraphicsPath classe fornece os seguintes métodos para criar uma sequência de itens a serem desenhados: AddLine, , , , AddArcAddEllipseAddPolygonAddRectangle, AddCurve (para splines cardinais) e .AddBezier Cada um desses métodos é sobrecarregado; ou seja, cada método dá suporte a várias listas de parâmetros diferentes. Por exemplo, uma variação do método recebe quatro inteiros e outra variação do AddLineAddLine método recebe dois Point objetos.

Os métodos para adicionar linhas, retângulos e splines de Bézier a um caminho têm métodos complementares plurais que adicionam vários itens ao caminho em uma única chamada: AddLines, AddRectanglese AddBeziers. Além disso, os AddCurve métodos e têm métodos AddClosedCurve complementares e AddArcAddPie, que adicionam uma curva fechada ou pizza ao caminho.

Para desenhar um caminho, você precisa de um objeto, um objeto e um GraphicsPenGraphicsPath objeto. O Graphics objeto fornece o método e armazena Pen atributos, como largura e cor, da linha usada para renderizar o DrawPath caminho. O GraphicsPath objeto armazena a sequência de linhas e curvas que compõem o caminho. O Pen objeto e o objeto são passados como argumentos para o GraphicsPathDrawPath método. O exemplo a seguir desenha um demarcador que consiste em uma linha, uma elipse e uma spline de Bézier:

myGraphicsPath.AddLine(0, 0, 30, 20);
myGraphicsPath.AddEllipse(20, 20, 20, 40);
myGraphicsPath.AddBezier(30, 60, 70, 60, 50, 30, 100, 10);
myGraphics.DrawPath(myPen, myGraphicsPath);
myGraphicsPath.AddLine(0, 0, 30, 20)
myGraphicsPath.AddEllipse(20, 20, 20, 40)
myGraphicsPath.AddBezier(30, 60, 70, 60, 50, 30, 100, 10)
myGraphics.DrawPath(myPen, myGraphicsPath)

A ilustração a seguir mostra o demarcador.

Image of a path displayed within a graph.

Além de adicionar linhas, retângulos e curvas a um demarcador, você pode adicionar demarcadores a um demarcador. Isso permite combinar os demarcadores existentes para formar demarcadores grandes e complexos.

myGraphicsPath.AddPath(graphicsPath1, false);
myGraphicsPath.AddPath(graphicsPath2, false);
myGraphicsPath.AddPath(graphicsPath1, False)
myGraphicsPath.AddPath(graphicsPath2, False)

Há dois outros itens que você pode adicionar a um demarcador: cadeias de caracteres e pizzas. Uma pizza é uma parte do interior de uma elipse. O exemplo a seguir cria um demarcador de um arco, uma spline cardinal, uma cadeia de caracteres e uma pizza:

GraphicsPath myGraphicsPath = new GraphicsPath();

Point[] myPointArray =
{
    new Point(5, 30),
    new Point(20, 40),
    new Point(50, 30)
};

FontFamily myFontFamily = new FontFamily("Times New Roman");
PointF myPointF = new PointF(50, 20);
StringFormat myStringFormat = new StringFormat();

myGraphicsPath.AddArc(0, 0, 30, 20, -90, 180);
myGraphicsPath.StartFigure();
myGraphicsPath.AddCurve(myPointArray);
myGraphicsPath.AddString("a string in a path", myFontFamily,
   0, 24, myPointF, myStringFormat);
myGraphicsPath.AddPie(230, 10, 40, 40, 40, 110);
myGraphics.DrawPath(myPen, myGraphicsPath);
Dim myGraphicsPath As New GraphicsPath()

Dim myPointArray As Point() = { _
   New Point(5, 30), _
   New Point(20, 40), _
   New Point(50, 30)}

Dim myFontFamily As New FontFamily("Times New Roman")
Dim myPointF As New PointF(50, 20)
Dim myStringFormat As New StringFormat()

myGraphicsPath.AddArc(0, 0, 30, 20, -90, 180)
myGraphicsPath.StartFigure()
myGraphicsPath.AddCurve(myPointArray)
myGraphicsPath.AddString("a string in a path", myFontFamily, _
   0, 24, myPointF, myStringFormat)
myGraphicsPath.AddPie(230, 10, 40, 40, 40, 110)
myGraphics.DrawPath(myPen, myGraphicsPath)

A ilustração a seguir mostra o demarcador. Observe que um demarcador não precisa estar conectado; o arco, spline cardinal, cadeia de caracteres e pizza são separados.

Paths

Confira também