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 |
---|
M startPoint- ou - m startPoint |
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 30
e L 20,30
são exemplos de comandos de linha válidos.
Sintaxe |
---|
L Extremidade- ou - l Extremidade |
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 (controlPoint
1 e controlPoint
2). C 100,200 200,400 300,200
é um exemplo de um comando de curva válido.
Sintaxe |
---|
C controlPoint controlPoint 1 2endPoint - ou - c controlPoint controlPoint 1 2endPoint |
Termo | Descrição |
---|---|
controlPoint 1 |
System.Windows.Point O primeiro ponto de controle da curva, que determina o início da tangente da curva. |
controlPoint 2 |
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 controlPoint
2. Por exemplo, S 100,200 200,300
é um comando de curva de Bézier cúbico suave válido.
Sintaxe |
---|
S controlPoint 2endPoint - ou - s controlPoint 2endPoint |
Termo | Descrição |
---|---|
controlPoint 2 |
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
.NET Desktop feedback