SVG-path
- Содержание:
- M, moveto
- Z, closepath
- L, lineto
- H, horizontal lineto
- V, vertical lineto
- C, curveto
- S, smooth curveto
- Q, quadratic Bézier curveto
- T, smooth quadratic Bézier curveto
- A, elliptical arc
path
— более сложный вариант линии. С его помощью можно нарисовать line
, polyline
, polygon
, circle
и rect
:
В отличие от polygon
, фигура не замыкается сама по себе, но это можно сделать с помощью дополнительного параметра.
Пример фигуры с path
:
Точки фигуры задаются в атрибуте d
. В значении содержатся команды, управляющие направлением и видом линий.
Координаты x
и y
можно разделять запятой или пробелом, но запятая наглядней.
Все команды обозначаются одной буквой, и могут быть записаны в верхнем или нижнем регистре. Верхний регистр обозначает использование абсолютных координат, нижний — относительных.
Примеры ниже демонстрируют разницу между абсолютными и относительными координатами. Различие состоит во второй строке: M 20,20 L 100,150
vs m 20,20 l 100,150
.
Команды в нижнем регистре ( m
и l
) указывают отсчитывать координаты не от верхнего левого угла полотна, а от текущей точки (пример справа):
Команды:
M, m
M
— moveto, обозначает начало новой линии — точку, с которой мы начинаем рисовать.
Параметры: x,y
.
Команд M
в строке может быть несколько, каждая из них будет обозначать начало новой линии:
Z, z
Z
— closepath — замкнуть фигуру, при этом рисуется линия от текущей точки до начальной. Действие этой команды не зависит от регистра, Z
и z
сработают одинаково.
Параметры: нет.
Z
избавляет от необходимости указывать последнюю точку с координатами первой, чтобы закончить фигуру. Кроме того, если замыкать фигуру вручную, может получиться неаккуратный стык:
Вместо последней точки используем Z
и получаем аккуратно замкнутую фигуру:
L, l
L
— lineto — рисование линии.
Параметры: x,y
.
Следует отметить, что писать L
перед каждой точкой не обязательно:
L 80,20 L 20,100
= L 80,20 20,100
Строчки сработают одинаково, но с L
удобнее, если код предполагается читать.
H, h
H
— horizontal lineto — рисование горизонтальной линии.
Параметры: x
.
V, v
V
— vertical lineto — рисование вертикальной линии.
Параметры: y
.
С помощью этих команд очень удобно рисовать прямоугольные фигуры:
Помимо команд для рисования прямых линий, есть несколько команд для рисования кривых. Они достаточно интересные, хотя и несколько сложнее для понимания.
Пунктирная линия в примерах (где возможно) показывает, что получается без команды, задающей кривую. Для меня вспомогательная линия сделала несколько понятнее прицип работы этих команд.
C, c
C
— curveto
Параметры: x1 y1 x2 y2 x y
Абсолютные координаты
C 150,20 150,150 20,150
Относительные координаты
c 150,20 150,150 20,150
S, s
S
— smooth curveto
Параметры: x2 y2 x y
Абсолютные координаты
S 180,100 20,180
Относительные координаты
s 180,100 20,180
Q, q
Q
— quadratic Bézier curveto
Параметры: x1 y1 x y
Абсолютные координаты
Q 180,100 20,180
Относительные координаты
q 180,100 20,180
T, t
T
— smooth quadratic Bézier curveto
Параметры: x1 y1 x y
Абсолютные координаты
T 60,100 180,20
Относительные координаты
t 60,100 180,20
A, a
A
— elliptical arc
Параметры: rx ry x-axis-rotation large-arc-flag sweep-flag x y
Абсолютные координаты
A20,35 0 0,0 170,2
Относительные координаты
a20,35 0 0,0 170,20
Чтобы получить более полное представление о работе этих функций читайте спецификацию.
- Ссылки по теме:
- Paths
- Метки:
- SVG