Xamarin.Forms Фигуры: синтаксис разметки пути
Xamarin.Forms Синтаксис разметки пути позволяет компактно указывать геометрии пути в XAML. Синтаксис указывается как строковое значение Path.Data
для свойства:
<Path Stroke="Black"
Data="M13.908992,16.207977 L32.000049,16.207977 32.000049,31.999985 13.908992,30.109983Z" />
Синтаксис разметки пути состоит из необязательного FillRule
значения и одного или нескольких описаний рисунков. Этот синтаксис можно выразить следующим образом: <Path Data="
[fillRule] рисунокDescription [рисунокDescription] * " ... />
В этом синтаксисе:
- fillRule является необязательным
Xamarin.Forms.Shapes.FillRule
, который указывает, следует ли использоватьEvenOdd
геометрию илиNonzero
FillRule
.F0
используется для указанияEvenOdd
правила заполнения, аF1
используется для указанияNonzero
правила заполнения. Дополнительные сведения о правилах заполнения см. в разделе Xamarin.Forms "Фигуры: правила заполнения". - figureDescription представляет фигуру, состоящую из команды перемещения, команд рисования и необязательной команды закрытия. Команда перемещения указывает начальную точку рисунка. Команды рисования описывают содержимое рисунка, а необязательная команда закрытия закрывает рисунок.
В приведенном выше примере синтаксис разметки пути указывает начальную точку с помощью команды перемещения (M
), серию прямых строк с помощью команды строки (L
) и закрывает путь с помощью команды close (Z
).
В синтаксисе разметки пути пробелы не требуются до или после команд. Кроме того, два числа не должны быть разделены запятыми или пробелами, но это может быть достигнуто только в том случае, если строка является однозначной.
Совет
Синтаксис разметки пути совместим с определениями пути к изображениям с масштабируемым векторным вектором (SVG), поэтому его можно использовать для переноса графики из формата SVG.
Хотя синтаксис разметки пути предназначен для использования в XAML, его можно преобразовать Geometry
в объект в коде, вызвав ConvertFromInvariantString
метод в PathGeometryConverter
классе:
Geometry pathData = (Geometry)new PathGeometryConverter().ConvertFromInvariantString("M13.908992,16.207977 L32.000049,16.207977 32.000049,31.999985 13.908992,30.109983Z");
Команда перемещения
Команда перемещения задает начальную точку нового рисунка. Синтаксис этой команды: M
startPoint или m
startPoint.
В этом синтаксисе startPoint — это Point
структура, указывающая начальную точку нового рисунка. Если вы перечисляете несколько точек после команды перемещения, то строка выводится на эти точки.
M 10,10
пример допустимой команды перемещения.
Команды рисования
Команда рисования может состоять из нескольких команд формы. Доступны следующие команды рисования:
- Строка (
L
илиl
). - Горизонтальная линия (
H
илиh
). - Вертикальная линия (
V
илиv
). - Эллиптическая дуга (
A
илиa
). - Кубическая кривая Bezier (
C
илиc
). - Квадратная кривая Bezier (
Q
илиq
). - Гладкая кубическая кривая Bezier (
S
илиs
). - Гладкая квадратная кривая Bezier (
T
илиt
).
Каждая команда рисования указывается с нечувствительной буквой регистра. При последовательном вводе нескольких команд одного типа можно опустить дубликат команды. L 100,200 300,400
Например, эквивалентно L 100,200 L 300,400
.
Команда "Строка"
Команда строки создает прямую линию между текущей точкой и указанной конечной точкой. Синтаксис этой команды: L
endPoint или l
endPoint.
В этом синтаксисе endPoint представляет Point
конечную точку строки.
L 20,30
и L 20 30
являются примерами допустимых команд строки.
Сведения о создании прямой линии в качестве PathGeometry
объекта см. в разделе "Создание LineSegment".
Команда горизонтальной строки
Команда горизонтальной строки создает горизонтальную линию между текущей точкой и указанной координатой x. Синтаксис этой команды: H
x или h
x.
В этом синтаксисе x представляет double
координату x конечной точки линии.
H 90
— пример допустимой команды рисования горизонтальной линии.
Команда вертикальной строки
Команда вертикальной строки создает вертикальную линию между текущей точкой и указанной координатой y. Синтаксис для этой команды: V
y или v
y.
В этом синтаксисе y представляет double
координату y конечной точки линии.
V 90
— пример допустимой команды рисования вертикальной линии.
Команда эллиптической дуги
Команда эллиптической дуги создает эллиптические дуги между текущей точкой и указанной конечной точкой. Синтаксис этой команды: A
size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint или a
size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint.
В этом синтаксисе:
size
— это объектSize
, представляющий x-и y-радиус дуги.rotationAngle
double
представляет поворот многоточия в градусах.isLargeArcFlag
должно быть установлено значение 1, если угол дуги должен иметь значение 180 градусов или больше, в противном случае задайте значение 0.sweepDirectionFlag
Должно быть установлено значение 1, если дуга рисуется в направлении положительного угла, в противном случае задайте значение 0.endPoint
— это тоPoint
, к чему рисуется дуга.
A 150,150 0 1,0 150,-150
является примером допустимой эллиптической команды arc.
Сведения о создании эллиптической дуги в качестве PathGeometry
объекта см. в разделе "Создание ArcSegment".
Команда кривой «Кубическая безье»
Команда кубической кривой Bezier создает кубическую кривую Bezier между текущей точкой и указанной конечной точкой с помощью двух указанных контрольных точек. Синтаксис этой команды: C
controlPoint1 controlPoint2 endPoint2 или c
controlPoint1 controlPoint2 endPoint2.
В этом синтаксисе:
- controlPoint1 представляет
Point
первую контрольную точку кривой, которая определяет начальный тангенс кривой. - controlPoint2 представляет
Point
вторую контрольную точку кривой, которая определяет конечный тангенс кривой. - EndPoint — это точка
Point
, в которой рисуется кривая.
C 100,200 200,400 300,200
является примером допустимой команды кривой кубической bezier.
Сведения о создании кубической кривой Bezier в качестве PathGeometry
объекта см. в разделе "Создание BezierSegment".
Команда кривых квадратических Bezier
Команда квадратной кривой Bezier создает квадратную кривую Bezier между текущей точкой и указанной конечной точкой с помощью указанной контрольной точки. Синтаксис этой команды: Q
controlPoint endPoint или q
controlPoint endPoint.
В этом синтаксисе:
- controlPoint — это
Point
точка управления кривой, которая определяет начальные и конечные тангенсы кривой. - EndPoint — это точка
Point
, в которой рисуется кривая.
Q 100,200 300,200
— пример допустимой команды рисования кривой Безье второго порядка.
Сведения о создании квадратной кривой Bezier в качестве PathGeometry
объекта см. в разделе "Создание квадратикаBezierSegment".
Команда гладкой кубической кривой Bezier
Команда гладкой кубической кривой Bezier создает кубическую кривую Bezier между текущей точкой и указанной конечной точкой с помощью указанной контрольной точки. Синтаксис этой команды: S
controlPoint2 endPoint или s
controlPoint2 endPoint2.
В этом синтаксисе:
- controlPoint2 представляет
Point
вторую контрольную точку кривой, которая определяет конечный тангенс кривой. - EndPoint — это точка
Point
, в которой рисуется кривая.
Предполагается, что первая контрольная точка отражает вторую контрольную точку предыдущей команды относительно текущей точки. Если предыдущей команды нет, либо предыдущая команда не была кубической кривой Bezier или гладкой командой кривой Bezier, предполагается, что первая контрольная точка совпадает с текущей точкой.
S 100,200 200,300
пример допустимой команды гладкой кубической кривой Bezier.
Команда гладкой квадратной кривой Bezier
Команда гладкой квадратной кривой Bezier создает квадратную кривую Bezier между текущей точкой и указанной конечной точкой с помощью контрольной точки. Синтаксис этой команды: T
endPoint или t
endPoint.
В этом синтаксисе endPoint представляет Point
точку, к которой рисуется кривая.
Предполагается, что контрольная точка является отражением контрольной точки предыдущей команды относительно текущей точки. Если предыдущей команды нет или если предыдущая команда не была квадратной кривой Bezier или гладкой четырехкратной кривой Bezier, то предполагается, что точка управления совпадает с текущей точкой.
T 100,30
является примером допустимой команды гладкой квадратной кривой Bezier.
Закрыть команду
Команда close заканчивает текущую фигуру и создает строку, которая подключает текущую точку к начальной точке рисунка. Поэтому эта команда создает соединение строк между последним сегментом и первым сегментом рисунка.
Синтаксис для команды close: Z
или z
.
Дополнительные значения
Вместо стандартного числового значения можно также использовать следующие специальные значения с учетом регистра:
Infinity
double.PositiveInfinity
представляет .-Infinity
double.NegativeInfinity
представляет .NaN
double.NaN
представляет .
Кроме того, можно также использовать нечувствительные научные нотации регистра. +1.e17
Поэтому является допустимым значением.