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 |
Especifica se o StreamGeometry usa o EvenOdd ou Nonzero FillRule. 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 |
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 |
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 |
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 |
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 |
O primeiro ponto de controle da curva, que determina o início da tangente da curva. |
controlPoint2 |
O segundo ponto de controle da curva, que determina o final da tangente da curva. |
endPoint |
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 |
O ponto de controle da curva, que determina o início e final da tangente da curva. |
endPoint |
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 |
O ponto de controle da curva, que determina o final da tangente da curva. |
endPoint |
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 |
O ponto de controle da curva, que determina o início e tangente da curva. |
endPoint |
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 |
O raio x e y do arco. |
rotationAngle |
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 |
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 |
A coordenada x do ponto. |
y |
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.
Infinito
Representa Double.PositiveInfinity-Infinito
Representa Double.NegativeInfinityNaN
Representa Double.NaN
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