English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
O elemento 'path' é um elemento genérico usado para definir formas. Todas as formas básicas podem ser criadas usando o elemento 'path'. O elemento <path> do SVG é usado para desenhar formas avançadas compostas por linhas, arcos, curvas, entre outros, com ou sem preenchimento. Este elemento <path> pode ser o mais avançado e mais genérico entre todos os elementos do SVG, e também pode ser o mais difícil de dominar.
Editor de SVG online - 可在线编辑SVG,根据SVG可转为源代码
SVG
简单示例:
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <path d="M50,50 A30,30 0 0,1 35,20 L100,100 M110,110 L100,0" style="stroke:#660000; fill:none;"/> </svg>Teste para ver ‹/›
O resultado após a execução é o seguinte:
请注意图像如何包含一条圆弧和两条直线,以及第二条直线如何没有与第一条圆弧和直线连接。
所有带有
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <path d="M50,50" style="stroke:#660000; fill:none;"/> </svg>Teste para ver ‹/›
本示例将虚拟笔移动到50,50点。下一个绘图命令将从该点开始。
画一条线可能是您可以给
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <path d="M50,50 L100,100" style="stroke:#660000; fill:none;"/> </svg>
Este exemplo começa do ponto50,50(M命令的点)到点100,100(L命令的点)画一条线。 运行后图像效果:
L和l命令之间的区别在于,大写版本(L)绘制一条直线到传递给命令的绝对点,而小写版本(l)版本绘制一条直线到传递给命令的相对点。相对点是虚拟笔在行开始之前的点,加上给定l命令的坐标。
如果虚拟笔位于50,50,并且您使用l100,100命令,则直线将绘制为50+100,50+100=150,150。 而不管虚拟笔的位置如何,使用L100,100命令可以精确地将直线绘制到100,100.
路径形状始终从最后一个虚拟笔点绘制到新的点。 每个绘图命令都有一个终点。 执行该命令后,虚拟笔点将位于该绘图命令的终点。 下一个绘图命令将从该点开始。
使用
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <path d="M50,50 A30,50 0 0,1 100,100" style="stroke:#660000; fill:none;"/> </svg>Teste para ver ‹/›
O resultado após a execução é o seguinte:
Este exemplo começa do ponto50,50 até o ponto100,100 (último especificado no comando A) para desenhar uma arco.
O raio da arco é configurado pelos dois primeiros parâmetros definidos no comando A. O primeiro parâmetro é rx (raio na direção x), e o segundo parâmetro é ry (raio na direção y). Definir rx e ry com o mesmo valor produzirá um arco. Definir rx e ry com valores diferentes produzirá um arco elíptico. No exemplo acima, rx é configurado como30, ry definido para50.
O terceiro parâmetro configurado no comando A é a rotação do eixo x (x-axis-rotation). Em comparação com o eixo x normal, isso configurará a rotação do eixo x do arco. No exemplo acima, a rotação do eixo x foi configurada para 0. Na maioria das vezes, você não precisa alterar esse parâmetro.
flag) são os três primeiros parâmetros. O quarto e quinto parâmetros são o sinalizador de arco grande (large-um exemplo de arco com o sinalizador de arco grande (large-arc-flag) determina se deve ser desenhado o arco menor ou maior que atende aos pontos de partida, destino e rx e ry. Abaixo está um exemplo de desenho-um exemplo de arco com o sinalizador de arco grande (large-flag) parâmetros. O sinalizador de arco grande (large4flag) determina se deve ser desenhado o arco menor ou maior que atende aos pontos de partida, destino e rx e ry. Abaixo está um exemplo de desenho-um exemplo de arco com o sinalizador de arco grande (large-arc-flag) e o sinalizador de varredura (sweep
<svg width="500" height="12flag) combinações diferentes: <path d="M40,20 "style="stroke: #00ff00; stroke30,30"> 60,70 0 0,0-largura:2; fill:none;"</path> <path d="M40,20 "style="stroke: #00ff00; stroke30,30 "style="stroke: #ff0000; stroke 10 "style="stroke: #cccc00; stroke 60,7,0-largura:2; fill:none;"</path> <path d="M40,20 "style="stroke: #00ff00; stroke30,30 "style="stroke: #ff0000; stroke 1,1 60,70 0,-largura:2; fill:none;"</path> <path d="M40,20 "style="stroke: #00ff00; stroke30,30 0 0,1 60,70" style="stroke: #0000ff; stroke-largura:2; fill:none;"</path> </svg>Teste para ver ‹/›
O resultado após a execução é o seguinte:
pode ser40,20 até o ponto60,70 para desenhar quatro arcos diferentes. Um arco longo, um arco curto e cada arco curto/duas versões espelhadas do arco grande. O sinalizador de arco grande determina se deve ser desenhado um arco grande ou pequeno. O sinalizador de varredura determina se o arco será espelhado ao longo do eixo de partida para destino. Na verdade, o sinalizador de varredura controla a direção de desenho do arco (horário ou anti-horário), resultando no efeito de 'espelho'.
O primeiro arco desenhado é o arco amarelo. Definir o sinalizador de arco grande (large
O segundo arco desenhado é o arco vermelho. Definir o sinalizador de arco grande (large1Significa que será desenhado o maior dos dois arcos possíveis, com um raio de40,20 até60,70. Abaixo estão os arcos amarelos e vermelhos juntos, para ilustrar as diferenças:
os arcos verdes e azuis (de todos os quatro arcos do exemplo anterior) são iguais aos arcos amarelos e vermelhos, mas ao desenhar, a sinalização de varredura (sweep)-flag) definido para1Isso significa que elas desenharão o mesmo arco, mas irão se espelhar no eixo de partida para destino.
Ainda é possível usar o elemento <path> para desenhar curvas Bezier de segundo grau. O desenho de curvas Bezier de segundo grau é feito usando os comandos Q e Q. Como uma linha reta, o comando em maiúsculo (Q) usa coordenadas absolutas como seu ponto final, enquanto o comando em minúsculo (q) usa coordenadas relativas (relativas ao ponto de partida). Abaixo está um exemplo simples de curva de segundo grau:
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M50,50 Q50,100 100,100" style="cor da linha: #006666; fill:none;"/></svg>Teste para ver ‹/›
O resultado após a execução é o seguinte:
Este exemplo desenha uma curva Bezier quadrática a partir de50,50 até o ponto100,100, o ponto de controle é50,200. O ponto de controle é o primeiro dos dois parâmetros definidos na ordem Q.
Os pontos de controle atraem a curva como um ímã. Quanto mais próximo um ponto da curva estiver do ponto de controle, mais o ponto de controle se puxará para dentro, o que significa que está mais próximo do ponto de controle. Aqui estão alguns exemplos de pontos de controle desenhados na imagem:
Na verdade, se você desenhar uma linha da origem para o ponto de controle e outra linha do ponto de controle para o ponto final, a linha que liga o meio da primeira linha ao meio da segunda linha é a tangente da curva. Aqui está uma imagem que ilustra isso:
Desenhar curvas Bezier de terceiro grau usando os comandos C e c. As curvas Bezier de terceiro grau são semelhantes às curvas Bezier quadráticas, exceto que elas têm dois pontos de controle em vez de um. Como as linhas, o comando em maiúsculas (C) usa coordenadas absolutas como seu ponto final, enquanto o comando em minúsculas (c) usa coordenadas relativas (relativas ao ponto de partida):
<path d="M50,50 C75,80 125,20 150,50" style="cor da linha: #006666; fill:none;"/>
Esta é a imagem resultante ao desenhar os pontos de controle, o resultado após a execução é o seguinte.
Você pode usar curvas Bezier de terceiro grau para criar curvas avançadas:
O elemento <path> possui um comando rápido para fechar o caminho, o que significa uma linha que retorna do último ponto desenhado ao primeiro ponto. O comando é Z (ou z)-Não há diferença entre comandos de fechamento de caminho em maiúsculas e minúsculas):
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M50,50 L100,50 L100,100 Z" style="cor da linha: #006666; fill:none;"/></svg>Teste para ver ‹/›
O resultado após a execução é o seguinte:
Você pode combinar comandos path no mesmo elemento <path>. Abaixo está um exemplo:
<svg width="500" height="225"> <path d="M100,100 L150,100 a50,25 0 0,0 150,100 q50,-50 70,-170 Z" style="cor da linha: #006666; fill: none;"></path> </svg>Teste para ver ‹/›
Este exemplo desenha uma linha reta, um arco circular, uma curva Bezier quadrática e fecha o caminho com uma linha que retorna ao ponto de partida. Aqui está a imagem gerada:
Você pode usar a propriedade fill CSS para preencher o caminho. Abaixo está um exemplo:
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M100,100 L150,100 L150,150 Z" style="cor da linha: #0000cc; cor da linha-largura: 2px; fill: #ccccff;"/></svg>Teste para ver ‹/›
O resultado após a execução é o seguinte:
Observe como o interior da forma é preenchido com azul claro.
Você pode usar marcadores no elemento <path>. Os marcadores são pequenos símbolos localizados no início, meio e fim do caminho, usados para mostrar a direção do caminho. Por exemplo, o início do caminho tem um círculo ou quadrado e o final tem uma seta.
Se precisar usar o mesmo comando várias vezes, pode omitir a letra do comando e fornecer apenas um conjunto adicional de parâmetros, como se o comando estivesse lá. Este é um exemplo:
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M10,10 l100,0 0,50 -100,0 0,-50" style="stroke: #000000; fill:none;" /></svg>Teste para ver ‹/›
Este exemplo ilustra como passar outros parâmetros para o comando l, como se cada parâmetro tivesse um l antes. Isso também se aplica a outros comandos de caminho. A seguir está a imagem gerada:
A seguir está o SVG path
ElementoLista de possíveis comandos do lápis.Cada comando é composto por uma letra e um grupo de números (coordenadas, etc.), que são os parâmetros do comando.Os comandos em maiúsculo geralmente interpretam os parâmetros de coordenadas como coordenadas absolutas.Os comandos em minúsculo geralmente interpretam os parâmetros de coordenadas em relação à posição atual do lápis.
Comando | Parâmetros | Nome | Descrição |
M | x, y | moveto | Mover o lápis para o ponto x, y especificado, sem desenhar. |
m | x, y | moveto | Mover o lápis para o ponto x, y especificado, sem desenhar, em relação à posição atual do lápis. |
L | x, y | Lineto | Desenhar uma linha reta desde a posição atual do lápis até o ponto x, y especificado. |
l | x, y | Lineto | Desenhar uma linha reta desde a posição atual do lápis até o ponto x, y especificado, em relação à posição atual do lápis. |
H | X | Linha horizontal | Desenhar uma linha horizontal até o ponto definido (x especificado, y atual do lápis) |
H | X | Linha horizontal | Desenhar uma linha horizontal até o ponto definido (x atual do lápis+Especificar x, y atual do lápis). x é em relação à posição x atual do lápis. |
V | y | Linha vertical | No espaço definido por (Definido(x atual, y especificada)Desenhar uma linha vertical no ponto definido. |
v | y | Linha vertical | Desenhar uma linha vertical até o ponto definido (x atual do lápis, y atual do lápis +y especificada).y em relação à posição y atual do lápis. |
C | x1, y1 x2, y2 x, y | Curva | Desenhar uma curva bézier cúbica de acordo com o ponteiro atual até x, y.x1, y1e x2, y2É o ponto de partida e o ponto de chegada da curva, que determina a maneira de curvar a curva. |
c | x1, y1 x2, y2 x, y | Curva | Como C, mas interpreta o coordenadas em relação ao ponteiro atual. |
S | x2, y2 x, y | Abreviação/ | Desenhar uma curva bézier cúbica de acordo com o ponteiro atual até x, y.x2, y2É o ponto de controle final.Presume que o ponto de controle de partida seja o mesmo que o ponto de controle final da curva anterior. |
s | x2, y2 x, y | Abreviação/ Curva suave | Como S, mas interpreta o coordenadas em relação ao ponteiro atual. |
Q | x1, y1 x, y | Curva bézier quadrática | Desenhar uma curva bézier quadrática de acordo com o ponteiro atual até x, y.x1, y1É o ponto de controle que determina a maneira de curvar a curva. |
q | x1, y1 x, y | Curva bézier quadrática | Como Q, mas interpreta o coordenadas em relação ao ponteiro atual. |
T | x, y | Abreviação/Curva Quadrática Suave | Desenhar uma curva bézier quadrática de acordo com o ponteiro atual até x, y.Presume que os pontos de controle sejam os mesmos que o último usado. |
t | x, y | Abreviação/Curva Quadrática Suave | Como T, mas com coordenadas relativas ao ponteiro atual. |
A | rx, ry Rotação no eixo x Marcador de arco grande, sweepflag x, y | Arco Elíptico | Desenhe um arco elíptico de ponto atual para x, y.rx e ry são os raios elípticos nas direções x e y. A rotação x determina quanto o arco girará ao redor do eixo x.Aparece a ser eficaz apenas quando rx e ry têm valores diferentes. Parece que não há uso de large-Sinal de arco (pode ser 0 ou1)Valor (0 ou1Nenhum dos valores ) não mudará o arco. O sinal de escaneamento determina a direção de desenho do arco. |
a | rx, ry Rotação no eixo x Marcador de arco grande, sweepflag x, y | Arco Elíptico | Como A, mas com coordenadas relativas ao ponteiro atual. |
Z | Caminho Fechado | Feche o caminho desenhando uma linha de ponto atual para o primeiro ponto. | |
z | Caminho Fechado | Feche o caminho desenhando uma linha de ponto atual para o primeiro ponto. |