Compartilhar via


Sintaxe de Marcação de Caminho

Caminhos são discutidos em Visão geral de Formas e Desenho básico no WPF e Visão Geral de Geometria, entretanto, este tópico descreve em detalhes a poderosa e complexa mini-linguagem que você pode usar para especificar a geometria de caminhos de forma mais compacta usando Extensible Application Markup Language (XAML).

Este tópico contém as seguintes seções.

Pré-requisitos

Para entender este tópico, você deve ser familiar com o básico dos objetos Geometry. Para obter mais informações, consulte o Visão Geral de Geometria.

Mini-Linguagem de GeometriaCorrida e ColeçãoDeCaminhosFigura

WPF fornece duas classes que fornecem a mini-idiomas para descrever geométricos caminhos: StreamGeometry and PathFigureCollection.

  • Você usa a mini-linguagem StreamGeometry quanto especificando a propriedade do tipo Geometry, tal como a propriedade Clip de um UIElement ou a propriedade Data de um elemento Path. O exemplo seguinte usa a sintaxe de atributo para criar um StreamGeometry.

    <Path Stroke="Black" Fill="Gray"
          Data="M 10,100 C 10,300 300,-200 300,100" />
    
  • Você usa a mini-linguagem PathFigureCollection quando especificando a propriedade Figures de um PathGeometry. O exemplo seguinte usa uma sintaxe de atributo para criar um PathFigureCollection para um PathGeometry.

    <Path Stroke="Black" Fill="Gray">
      <Path.Data>
        <PathGeometry Figures="M 10,100 C 10,300 300,-200 300,100" />
      </Path.Data>
    </Path>
    

Como você pode ver nos exemplos anteriores, as duas mini-linguagens são bastante parecidas. Sempre é possível usar um PathGeometry em qualquer situação onde você possa usar um StreamGeometry; então qual deles você deve usar? Use um StreamGeometry quando você não precisa modificar o caminho depois de criá-lo; use um PathGeometry se você precisa modificar o caminho.

Para mais informações sobre a diferença entre objetos PathGeometry e StreamGeometry, consulte o Visão Geral de Geometria.

Uma Nota sobre Espaço em Branco

Para ser breve, um único espaço é mostrado na seção de sintaxe seguinte, mas múltiplos espaços também são aceitos sempre que um único espaço é mostrado.

Dois números não precisam ser separados por vírgula ou espaço em branco, mas isto só pode ser feito quando a string resultante não é ambígua. Por exemplo, 2..3 é na verdade, dois números: “2.” E “.3”. Similarmente, 2-3 é “2” e “-3”. Espaços também não são necessários antes ou depois de comandos.

Sintaxe

O uso da sintaxe do atributo Extensible Application Markup Language (XAML) para um StreamGeometry é composta de um valor FillRule opcional e um ou mais descrições de figura.

Uso do Atributo XAML da GeometriaCorrida

<object property="[fillRule] figureDescription[figureDescription]*" ... />

O uso da sintaxe do atributo Extensible Application Markup Language (XAML) para um PathFigureCollection é composta de um ou mais descrições de figura.

Uso do Atributo XAML de ColeçãoDeCaminhoFigura

<object property="figureDescription[figureDescription]*" ... />

Termo

Descrição

regraDePreenchimento

System.Windows.Media.FillRule

Especifica se o StreamGeometry usa o EvenOdd ou Nonzero FillRule.

  • F0 especifica a regra de preenchimento EvenOdd.

  • F1 especifica a regra de preenchimento Nonzero.

Se você omitir este comando, o sub caminho usa o comportamento padrão, que é EvenOdd. Se você especificar este comando, você deve colocá-lo primeiro.

descriçãoDeFigura

Uma figura é composta de um ou mais comandos de mover, comandos de desenhar, e um opcional comando de fechar.

moveCommanddrawCommands [closeCommand]

comandoMover

Um comando de mover que especifica o ponto de início de uma figura. Veja a seção Comando Mover.

comandosDeDesenhar

Um ou mais comandos de desenho que descrevem o conteúdo da figura. Veja a seção Comando Mover.

comandoFechar

Um comando fechar opcional que fecha a figura. Veja a seção Comando Fechar.

Comando Mover

Especifica o ponto de início de uma nova figura.

Sintaxe

M pontoDeInício

- ou -

m pontoDeInício

Termo

Descrição

pontoDeInício

System.Windows.Point

Especifica o ponto de início de uma nova figura.

Uma letra maiúscula M indica que startPoint é um valor absoluto; uma letra minúscula m indica que startPoint é um offset de um ponto anterior, ou (0, 0) se nenhum existe. Se você listar múltiplos pontos depois de um comando mover, uma linha é desenhada nestes pontos que você especificou o comando linha.

Comandos de Desenhar

Um comando de desenhar consiste de vários comandos de formas. Os comandos de forma a seguir estão disponíveis: linha, linha horizontal linha vertical, cúbica curva de Bézier, quadrático curva de Bézier, suave cúbica curva de Bézier, curva de Bézier quadrático suave e arco elíptico.

Você Enter cada comando, usando um maiúsculas ou uma Carta minúscula: letras maiúsculas indicam valores absolutos e letras minúsculas indicar valores relativos: os pontos de Controlarar para esse segmento está em relação ao ponto final do exemplo anterior. Quando você entra mais de um comando do mesmo tipo seqüencialmente, você pode omitir a entrada duplicada de comando; por exemplo L 100,200 300,400 é equivalente a L 100,200 L 300,400. A seguinte tabela descreve os comandos move e draw.

Comando Linha

Cria uma linha reta entre o ponto atual e o ponto de extremidade especificado. l 20 30 e L 20,30 são exemplos de comandos válidos line.

Sintaxe

L pontoFinal

- ou -

l pontoFinal

Termo

Descrição

pontoFinal

System.Windows.Point

O ponto final da linha.

Comando de Linha Horizontal

Cria uma linha horizontal entre o ponto atual e o coordenada x especificado. H 90 é um exemplo de um válido Linha Horizontal de comando.

Sintaxe

H x

- ou -

h x

Termo

Descrição

x

System.Double

A coordenada x do ponto final da linha.

Comando de Linha Vertical

Cria uma linha vertical entre o ponto atual e a coordenada y especificado. v 90 é um exemplo de um Válido vertical de linha de comando.

Sintaxe

V y

- ou -

v y

Termo

Descrição

y

System.Double

A coordenada y do ponto final da linha.

Comando de Curva de Bezier Cubica

Cria uma curva de Bézier cúbica entre o ponto atual e o ponto de extremidade especificado usando os dois pontos de Controlarar especificado (controlPoint1 e controlPoint2). C 100,200 200,400 300,200 é um exemplo de um comando de curva válido.

Sintaxe

C controlPoint1 controlPoint2 endPoint

- ou -

c controlPoint1 controlPoint2 endPoint

Termo

Descrição

controlPoint1

System.Windows.Point

O primeiro ponto de controle da curva, que determina o início da tangente da curva.

controlPoint2

System.Windows.Point

O segundo ponto de controle da curva, que determina o final da tangente da curva.

endPoint

System.Windows.Point

O ponto no qual a curva é desenhada.

Comando de Curva de Bezier Quadrática

Cria uma curva de Bézier quadrático entre o ponto atual e o ponto de extremidade especificado usando o ponto de Controlarar especificado (controlPoint). q 100,200 300,200 é um exemplo de um comando de curva de Bézier quadrático válido.

Sintaxe

Q controlPoint endPoint

- ou -

q controlPoint endPoint

Termo

Descrição

controlPoint

System.Windows.Point

O ponto de controle da curva, que determina o início e final da tangente da curva.

endPoint

System.Windows.Point

O ponto no qual a curva é desenhada.

Comando de curva de Bezier cubica Suave

Cria uma curva de Bezier cubica entre o ponto atual e o ponto final especificado. O primeiro ponto de controle é assumido ser a reflexão do segundo ponto de controle do comando anterior relativo ao ponto atual. Se não há nenhum comando anterior ou se o comando anterior não era um comando de curva de Bezier cubica ou um comando de curva de Bezier cubica suave, assuma que o primeiro ponto de controle é coincidente com o ponto atual. O segundo ponto de controle, o ponto de controle para o final da curva, é especificado por controlPoint2. Por exemplo, S 100,200 200,300 é um comando de curva de Bezier cubica válido.

Sintaxe

S controlPoint2 endPoint

- ou -

s controlPoint2 endPoint

Termo

Descrição

controlPoint2

System.Windows.Point

O ponto de controle da curva, que determina o final da tangente da curva.

endPoint

System.Windows.Point

O ponto no qual a curva é desenhada.

Comando de curva de Bezier quadrática Suave

Cria uma curva de Bezier quadrática entre o ponto atual e o ponto final especificado. O ponto de controle é assumido ser a reflexão do ponto de controle do comando anterior relativo ao ponto atual. Se não há nenhum comando anterior ou se o comando anterior não era um comando de curva de Bezier quadrática ou um comando de curva de Bezier cubica suave, o ponto de controle é coincidente com o ponto atual.

Sintaxe

T controlPoint endPoint

- ou -

t controlPoint endPoint

Termo

Descrição

controlPoint

System.Windows.Point

O ponto de controle da curva, que determina o início e tangente da curva.

endPoint

System.Windows.Point

O ponto no qual a curva é desenhada.

Comando de Arco Elíptico

Cria um arco elíptico entre o ponto atual e o ponto final especificado.

Sintaxe

A size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint

- ou -

a size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint

Termo

Descrição

size

System.Windows.Size

O raio x e y do arco.

rotationAngle

System.Double

A rotação da elipse, em graus.

isLargeArcFlag

Coloque 1 se o ângulo do arco deva ser 180 graus ou maior; coloque 0, caso contrário.

sweepDirectionFlag

Coloque 1 se o arco é desenhado na direção ângulo-positiva; caso contrário, coloque 0.

endPoint

System.Windows.Point

O ponto no qual o arco é desenhado.

O Comando Fechar

Termina a figura atual e cria uma linha que conecta o ponto atual ao ponto inicial da figura. Este comando cria uma linha-junção (canto) entre o último segmento e o primeiro segmento da figura.

Sintaxe

Z

- ou -

z

Sintaxe de Ponto

Descreve uma coordenada x e y de um ponto.

Sintaxe

x,y

- ou -

x y

Termo

Descrição

x

System.Double

A coordenada x do ponto.

y

System.Double

A coordenada y do ponto.

Valores Especiais

Ao invés de um valor numérico normal, você pode também usar os seguintes valores especiais. Esses valores são com diferenciação de maiúsculas e minúsculas.

Você também pode usar notação científica. Por exemplo, +1.e17 é um valor válido.

Consulte também

Conceitos

Visão geral de Formas e Desenho básico no WPF

Visão Geral de Geometria

Referência

Path

StreamGeometry

PathGeometry

PathFigureCollection

Outros recursos

Geometries How-to Topics

Exemplos de geometrias

Exemplos de formas