Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Os caminhos são discutidos em Formas e Desenho Básico na Visão Geral do WPF e na Visão Geral de Geometria, no entanto, este tópico descreve em detalhes a poderosa e complexa minilinguagem que você pode usar para especificar geometrias de caminho de forma mais compacta usando Extensible Application Markup Language (XAML).
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 o Geometry Overview.
StreamGeometry e PathFigureCollection Mini-Languages
O WPF fornece duas classes que fornecem minilinguagens para descrever caminhos geométricos: StreamGeometry e PathFigureCollection.
Você usa o mini-idioma StreamGeometry 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 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 foro 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-línguas são muito semelhantes. É sempre possível usar um PathGeometry em qualquer situação em que 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ê precisar modificar o caminho.
Para obter mais informações sobre as diferenças entre PathGeometry e StreamGeometry objetos, consulte a Visão geral de geometria.
Uma nota sobre o espaço em branco
Por uma questão 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 sempre que um único espaço é 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 resultante é inequívoca. Por exemplo, 2..3 na verdade são 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 figuras.
| Uso do atributo XAML StreamGeometry |
|---|
<
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 figuras.
| Utilização do atributo PathFigureCollection XAML |
|---|
<
Propriedade="figureDescription[ figureDescription]*" ... /> |
| Período | Descrição |
|---|---|
| fillRule | System.Windows.Media.FillRule Especifica se o StreamGeometry usa o EvenOdd ou NonzeroFillRule. - F0 Especifica a regra de preenchimento EvenOdd .- F1 Especifica a regra de preenchimento Nonzero .Se você omitir esse comando, o subcaminho usará o comportamento padrão, que é EvenOdd. Se você especificar esse comando, deverá colocá-lo primeiro. |
| Descrição da figura | Uma figura composta por um comando de movimento, comandos de desenho e um comando de encerramento opcional.moveCommand
drawCommands
[
closeCommand
]
|
| moveCommand | Um comando move que especifica o ponto inicial da figura. Consulte a seção Comando Mover. |
| drawComandos | Um ou mais comandos de desenho que descrevem o conteúdo da figura. Consulte a seção Comandos de Desenho. |
| fecharComando | Um comando opcional de fecho que fecha a figura. Consulte a seção Fechar comando . |
Comando Mover
Especifica o ponto inicial de uma nova figura.
| Sintaxe |
|---|
M
ponto de partida- ou - m
ponto de partida |
| Período | Descrição |
|---|---|
| ponto de partida | System.Windows.Point O ponto de partida de uma nova figura. |
Uma letra maiúscula M 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 existir. Se você listar vários pontos após o comando move, uma linha será desenhada para esses pontos, embora você tenha especificado o comando line.
Comandos de Desenho
Um comando draw pode consistir em vários comandos de forma. Os seguintes comandos de forma estão disponíveis: linha, linha horizontal, linha vertical, curva cúbica de Bezier, curva quadrática de Bezier, curva de Bezier cúbica lisa, curva de Bezier quadrática suave e arco elíptico.
Você insere 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.
Sugestão
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
ponto final- ou - l
ponto final |
| Período | Descrição |
|---|---|
| endpoint | System.Windows.Point O ponto final da linha. |
Uma letra maiúscula L 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 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 |
| Período | Descrição |
|---|---|
| x | System.Double A coordenada x do ponto final da linha. |
Uma letra maiúscula H 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 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 |
| Período | Descrição |
|---|---|
| y | System.Double A coordenada y do ponto final da linha. |
Uma letra maiúscula V 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 existir.
Comando Curva Cúbica de Bezier
Cria uma curva cúbica de Bezier 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 |
|---|
C
controlPoint
controlPoint1 2endPoint- ou - c
controlPoint
controlPoint1 2endPoint |
| Período | 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 de Curva Quadrática de Bézier
Cria uma curva de Bezier 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ático válido.
| Sintaxe |
|---|
Q
controlPoint
endPoint
- ou - q
controlPoint
endPoint
|
| Período | Descrição |
|---|---|
controlPoint |
System.Windows.Point O ponto de controle da curva, que determina as tangentes iniciais e finais da curva. |
endPoint |
System.Windows.Point O ponto para o qual a curva é desenhada. |
Comando de curva de Bezier cúbica suave
Cria uma curva cúbica de Bezier entre o ponto atual e o ponto final especificado. Assume-se que o primeiro ponto de controlo é o reflexo do segundo ponto de controlo do comando anterior em relação ao ponto atual. Se não houver nenhum comando anterior ou se o comando anterior não foi um comando de curva cúbica de Bezier ou um comando de curva de Bezier cúbica suave, suponha que o primeiro ponto de controle seja coincidente com o ponto atual. O segundo ponto de controlo, o ponto de controlo para o fim da curva, é especificado por controlPoint2. Por exemplo, S 100,200 200,300 é um comando válido de curva cúbica Bezier suave.
| Sintaxe |
|---|
S
controlPoint2endPoint- ou - s
controlPoint2endPoint |
| Período | 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 de Bezier quadrática entre o ponto atual e o ponto final especificado. Assume-se que o ponto de controlo é o reflexo do ponto de controlo do comando anterior em relação ao ponto atual. Se não houver nenhum comando anterior ou se o comando anterior não foi um comando de curva de Bezier quadrático ou um comando de curva de Bezier quadrática suave, o ponto de controle é coincidente com o ponto atual.
| Sintaxe |
|---|
T
endPoint
- ou - t
endPoint
|
| Período | 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 final especificado.
| Sintaxe |
|---|
A
size
rotationAngle
isLargeArcFlag
sweepDirectionFlag
endPoint
- ou - a
size
rotationAngle
isLargeArcFlag
sweepDirectionFlag
endPoint
|
| Período | Descrição |
|---|---|
size |
System.Windows.Size Os raios x e y do arco. |
rotationAngle |
System.Double A rotação da elipse, em graus. |
isLargeArcFlag |
Defina para 1 se o ângulo do arco deve ser de 180 graus ou maior; caso contrário, defina como 0. |
sweepDirectionFlag |
Regule para 1 se o arco for desenhado numa direção de ângulo positivo; caso contrário, defina como 0. |
endPoint |
System.Windows.Point O ponto até onde o arco é traçado. |
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 junção de linha (canto) entre o último segmento e o primeiro segmento da figura.
| Sintaxe |
|---|
Z- ou - z |
Sintaxe do ponto
Descreve as coordenadas x e y de um ponto onde (0,0) é o canto superior esquerdo.
| Sintaxe |
|---|
x
,
y
- ou - x
y
|
| Período | 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 são sensíveis à diferença entre maiúsculas e minúsculas.
O infinito representa Double.PositiveInfinity.
-O 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.
Ver também
- Path
- StreamGeometry
- PathGeometry
- PathFigureCollection
- Formas e Desenho Básico no WPF: Uma Visão Geral
- Visão geral da geometria
- Tópicos de tutoriais
.NET Desktop feedback