Compartilhar via


Sintaxe de marcação do caminho

Os 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 em detalhes a minilinguagem poderosa 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 Visão geral de geometria.

Mini-linguagens de PathFigureCollection e StreamGeometry

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

  • Você usa a StreamGeometry minilinguagem ao definir uma propriedade do tipo Geometry, como a Clip propriedade de a UIElement ou a Data propriedade de um Path elemento. O exemplo a seguir usa a sintaxe de atributo para criar um StreamGeometryarquivo .

    <Path Stroke="Black" Fill="Gray"
          Data="M 10,100 C 10,300 300,-200 300,100" />
    
  • Você usa a PathFigureCollection minilinguagem ao definir a Figures propriedade de um PathGeometryarquivo . 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; então qual você deve usar? Use um StreamGeometry quando 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 , consulte a Visão geral da geometria.

Uma observação sobre o espaço em branco

Para resumir, um único espaço é mostrado na seção de sintaxe que segue, mas vários 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 isso só pode ser feito quando a string resultante não é ambígua. Por exemplo, 2..3 na verdade são dois números: "2." E ".3". Da mesma forma, 2-3 é "2" e "-3". Espaços não são necessários antes ou depois de 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 StreamGeometry XAML
<objeto propriedade ="[ fillRule] figureDescription[ figureDescription]*" ... />

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

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

Especifica se o StreamGeometry usa o EvenOdd ou NonzeroFillRule.

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

Se você omitir esse comando, o subcaminho usará o comportamento padrão, que é EvenOdd. Se você especificar este comando, coloque-o primeiro.
figureDescription Uma figura é composta de um comando mover, desenhar e um comando opcional para fechar.

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

Comando Mover

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

Sintaxe
MstartPoint

- ou -

mstartPoint
Termo Descrição
startPoint System.Windows.Point

O ponto inicial da nova figura.

Uma letra M maiúscula indica que startPoint é um valor absoluto; uma minúscula m indica que startPoint é um deslocamento para o ponto anterior, ou (0,0) se não houver nenhum. Se você listar vários pontos após o comando Mover, uma linha será desenhada nestes pontos nos quais você especificou a linha de comando.

Comandos Desenhar

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

Insira cada comando usando uma letra maiúscula ou uma letra minúscula: letras maiúsculas denotam valores absolutos e letras minúsculas denotam valores relativos: os pontos de controle para aquele 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 final especificado. l 20 30e L 20,30 são exemplos de comandos de linha válidos.

Sintaxe
LExtremidade

- ou -

lExtremidade
Termo Descrição
endPoint System.Windows.Point

O ponto de extremidade da linha.

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

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
Termo Descrição
x System.Double

A coordenada X do ponto final da linha.

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

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
Termo Descrição
y System.Double

A coordenada y do ponto final da linha.

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

Comando de curva de Bézier cúbica

Cria uma curva de Bézier cúbica entre o ponto atual e o ponto final 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
CcontrolPointcontrolPoint1 2endPoint

- ou -

ccontrolPointcontrolPoint1 2endPoint
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 em que a curva é desenhada.

Comando de curva de Bezier quadrática

Cria uma curva de Bézier quadrática entre o ponto atual e o ponto final especificado usando o ponto de controle especificado (controlPoint). q 100,200 300,200 é um exemplo de um comando de curva de Bezier quadrática 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 em que a curva é desenhada.

Comando de Curva de Bézier cúbica suave

Cria uma curva de Bézier cúbica 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 houver nenhum comando anterior ou se o comando anterior não era um comando de curva de Bézier cúbico ou um comando de curva de Bézier cúbico suave, suponha 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 Bézier cúbico suave válido.

Sintaxe
S controlPoint2endPoint

- ou -

s controlPoint2endPoint
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 em que a curva é desenhada.

Curva de Bezier quadrática suave comando

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 houver 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 quadrático suave, o ponto de controle será coincidente com o ponto atual.

Sintaxe
T endPoint

- ou -

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

O ponto em que 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

Os raios x e y do arco.
rotationAngle System.Double

A rotação da elipse, em graus.
isLargeArcFlag Definido como 1 se o ângulo do arco deva ser 180 graus ou maior. Caso contrário, defina como 0.
sweepDirectionFlag Definido como 1 se o arco é desenhado na direção ângulo-positiva. Caso contrário, defina como 0.
endPoint System.Windows.Point

O ponto em que o arco é desenhado.

O comando Fechar

Termina a figura atual e cria uma linha que conecta o ponto atual ao ponto de partida 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 as coordenadas x e y de um ponto em que (0,0) é o canto superior esquerdo.

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

Em vez de um valor numérico padrão, você também pode usar os seguintes valores especiais. Esses valores diferenciam maiúsculas de minúsculas.

Infinity
Representa Double.PositiveInfinity.

-Infinito
Representa Double.NegativeInfinity.

NaN
Representa Double.NaN.

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

Confira também