Compartilhar via


Sintaxe de marcação de caminho

Caminhos são discutidos em Formas e Desenho Básico na Visão Geral do WPF e na Visão Geral da Geometria, no entanto, este tópico descreve detalhadamente a mini-linguagem avançada e complexa que você pode usar para especificar geometrias de caminho de forma mais compacta usando XAML (Extensible Application Markup Language).

Pré-requisitos

Para entender este tópico, você deve estar familiarizado com os recursos básicos dos Geometry objetos. Para obter mais informações, consulte a Visão Geral da Geometria.

StreamGeometry e PathFigureCollection Mini-Languages

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

  • Você usa a StreamGeometry mini-linguagem ao definir uma propriedade do tipo Geometry, como a propriedade Clip de um UIElement ou a propriedade Data de um elemento Path. O exemplo a seguir 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 PathFigureCollection mini-linguagem ao definir a Figures propriedade de um PathGeometry. O exemplo a seguir 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 muito semelhantes. É sempre possível usar um PathGeometry em qualquer situação em que você possa usar um StreamGeometry; portanto, qual deve ser usado? Use um StreamGeometry quando você não precisar modificar o caminho depois de criá-lo; use um PathGeometry se precisar modificar o caminho.

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

Uma observação sobre espaço em branco

Para fins de brevidade, um único espaço é mostrado nas seções de sintaxe a seguir, mas vários espaços também são aceitáveis onde quer que um único espaço seja mostrado.

Na verdade, dois números não precisam ser separados por uma vírgula ou espaço em branco, mas isso só pode ser feito quando a cadeia de caracteres resultante é inequívoca. Por exemplo, na verdade são 2..3 dois números: "2". E ".3". Da mesma forma, 2-3 é "2" e "-3". Os espaços também não são necessários antes ou depois dos comandos.

Sintaxe

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

Uso do atributo XAML streamGeometry
< objetopropriedade="[ fillRule] figureDescription[ figureDescription]*" ... />

A sintaxe de uso do atributo XAML (Extensible Application Markup Language) é composta por uma PathFigureCollection ou mais descrições de figura.

Uso do PathFigureCollection como atributo XAML
< objectpropriedade="figureDescription[ figureDescription]*" ... />
Prazo Descrição
fillRule System.Windows.Media.FillRule

Especifica se o StreamGeometry utiliza o EvenOdd ou o NonzeroFillRule.

- F0 especifica a EvenOdd regra de preenchimento.
- F1 especifica a Nonzero regra de preenchimento.

Se você omitir esse comando, o subcaminho usará o comportamento padrão, que é EvenOdd. Caso você especifique este comando, deverá colocá-lo em primeiro lugar.
figureDescription Uma figura composta por um comando de movimentação, comandos de desenho e um comando de fechamento opcional.

moveCommand drawCommands [ closeCommand ]
moveCommand Um comando de movimentação que especifica o ponto inicial da figura. Consulte a seção Mover Comando .
drawCommands Um ou mais comandos de desenho que descrevem o conteúdo da figura. Consulte a seção Comandos de Desenho.
comandoFechar Um comando opcional de fechamento que encerra a figura. Consulte a seção Fechar Comando .

Comando Mover

Especifica o ponto inicial de uma nova figura.

Sintaxe
M pontoInicial

- ou -

m pontoInicial
Prazo Descrição
pontoDePartida System.Windows.Point

O ponto inicial de uma nova figura.

Uma maiúscula M indica que startPoint é um valor absoluto; uma letra minúscula m indica que startPoint é um deslocamento para o ponto anterior ou (0,0) se nenhum existir. Se você listar vários pontos após o comando mover, uma linha será desenhada para esses pontos, embora você tenha especificado o comando de linha.

Comandos de Desenho

Um comando de desenho pode consistir em vários comandos de forma. Os seguintes comandos de forma estão disponíveis: linha, linha horizontal, linha vertical, curva de Bezier cúbica, curva quadrática de Bezier, curva bezier cúbica lisa, curva bezier quadrática suave e arco elíptico.

Insira cada comando usando uma letra maiúscula ou minúscula: letras maiúsculas denotam valores absolutos e letras minúsculas denotam valores relativos: os pontos de controle para esse segmento são relativos ao ponto final do exemplo anterior.

Dica

Ao inserir sequencialmente mais de um comando do mesmo tipo, você pode omitir a entrada de comando duplicada; por exemplo, L 100,200 300,400 é equivalente a L 100,200 L 300,400.

Comando de 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 de linha válidos.

Sintaxe
L Extremidade

- ou -

l Extremidade
Prazo Descrição
ponto de extremidade System.Windows.Point

O ponto final da linha.

Uma maiúscula L indica que endPoint é um valor absoluto; uma letra minúscula l indica que endPoint é um deslocamento para o ponto anterior ou (0,0) se nenhum existir.

Comando de Linha Horizontal

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

Sintaxe
H x

- ou -

h x
Prazo Descrição
x System.Double

A coordenada x do ponto final da linha.

Uma maiúscula H indica que x é um valor absoluto; uma letra minúscula h indica que x é um deslocamento para o ponto anterior ou (0,0) se nenhum existir.

Comando de Linha Vertical

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

Sintaxe
V y

- ou -

v y
Prazo Descrição
y System.Double

A coordenada y do ponto final da linha.

Uma maiúscula V indica que y é um valor absoluto; uma letra minúscula v indica que y é um deslocamento para o ponto anterior ou (0,0) se nenhum existir.

Comando de curva Bézier cúbica

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

Sintaxe
C controlPoint12controlPointendPoint

- ou -

c controlPoint12controlPointendPoint
Prazo Descrição
controlPoint1 System.Windows.Point

O primeiro ponto de controle da curva, que determina a tangente inicial da curva.
controlPoint2 System.Windows.Point

O segundo ponto de controle da curva, que determina a tangente final da curva.
endPoint System.Windows.Point

O ponto para o qual a curva é desenhada.

Comando Curva de Bézier Quadrática

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

Sintaxe
Q controlPoint endPoint

- ou -

q controlPoint endPoint
Prazo Descrição
controlPoint System.Windows.Point

O ponto de controle da curva, que determina as tangentes inicial e final da curva.
endPoint System.Windows.Point

O ponto para o qual a curva é desenhada.

Comando de curva bezier cúbica suave

Cria uma curva de Bezier cúbica entre o ponto atual e o ponto de extremidade especificado. Supõe-se que o primeiro ponto de controle seja o reflexo do segundo ponto de controle do comando anterior em relação ao ponto atual. Se não houver nenhum comando anterior ou se o comando anterior não fosse um comando de curva bezier cúbica ou um comando de curva bezier cúbica suave, suponha que o primeiro ponto de controle seja 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 válido de curva bezier cúbica suave.

Sintaxe
S controlPoint2endPoint

- ou -

s controlPoint2endPoint
Prazo Descrição
controlPoint2 System.Windows.Point

O ponto de controle da curva, que determina a tangente final da curva.
endPoint System.Windows.Point

O ponto para o qual a curva é desenhada.

Comando de curva Bézier quadrática suave

Cria uma curva quadrática de Bezier entre o ponto atual e o ponto de extremidade especificado. Supõe-se que o ponto de controle seja o reflexo do ponto de controle do comando anterior em relação ao ponto atual. Se não houver nenhum comando anterior ou se o comando anterior não fosse um comando de curva de Bézier quadrática ou um comando de curva Bézier quadrática suave, o ponto de controle será coincidente com o ponto atual.

Sintaxe
T endPoint

- ou -

t endPoint
Prazo Descrição
endPoint System.Windows.Point

O ponto para o qual a curva é desenhada.

Comando de arco elíptico

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

Sintaxe
A size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint

- ou -

a size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint
Prazo Descrição
size System.Windows.Size

O raio x e y do arco.
rotationAngle System.Double

A rotação da elipse, em graus.
isLargeArcFlag Defina como 1 se o ângulo do arco deve ser 180 graus ou maior; caso contrário, defina como 0.
sweepDirectionFlag Defina como 1 se o arco for desenhado em uma direção de ângulo positivo; caso contrário, defina como 0.
endPoint System.Windows.Point

O ponto até o 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. Esse comando cria uma junção de linha (canto) entre o último segmento e o primeiro segmento da figura.

Sintaxe
Z

- ou -

z

Sintaxe de ponto

Descreve as coordenadas x e y de um ponto em que (0,0) é o canto superior esquerdo.

Sintaxe
x , y

- ou -

x y
Prazo Descrição
x System.Double

A coordenada x do ponto.
y System.Double

A coordenada y do ponto.

Valores especiais

Em vez de um valor numérico padrão, você também pode usar os valores especiais a seguir. Estes valores são sensíveis a maiúsculas e minúsculas.

Infinito Representa Double.PositiveInfinity.

-Infinity Represents Double.NegativeInfinity.

NaN representa Double.NaN.

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

Consulte também