Синтаксис разметки пути
Пути рассматриваются в разделах "Фигуры" и "Базовый рисунок" в обзоре WPF и обзоре геометрии, однако в этом разделе подробно описаны мощные и сложные мини-языки, которые можно использовать для указания геометрий пути более компактно с помощью языка разметки расширяемых приложений (XAML).
Необходимые компоненты
Чтобы понять эту тему, необходимо ознакомиться с основными функциями Geometry объектов. Более подробную информацию см. в разделе Общие сведения о классе Geometry.
Мини-языки StreamGeometry и PathFigureCollection
WPF предоставляет два класса, которые предоставляют мини-языки для описания геометрических путей: StreamGeometry и PathFigureCollection.
При настройке свойства типа используется StreamGeometry мини-язык, например Clip свойство элемента UIElement или Data свойствоPath.Geometry В следующем примере для создания StreamGeometryатрибута используется синтаксис атрибутов.
<Path Stroke="Black" Fill="Gray" Data="M 10,100 C 10,300 300,-200 300,100" />
При настройке PathFigureCollection Figures свойства объекта PathGeometryиспользуется мини-язык. В следующем примере для создания PathFigureCollection атрибута используется синтаксис атрибута PathGeometry.
<Path Stroke="Black" Fill="Gray"> <Path.Data> <PathGeometry Figures="M 10,100 C 10,300 300,-200 300,100" /> </Path.Data> </Path>
Как видно из предыдущих примеров мини-языки очень похожи. Всегда можно использовать в любой PathGeometry ситуации, когда можно использовать a StreamGeometry; так что следует использовать? StreamGeometry Используйте, если не нужно изменять путь после его создания; используйте, PathGeometry если необходимо изменить путь.
Дополнительные сведения о различиях между PathGeometry объектами StreamGeometry см. в обзоре геометрии.
Примечание о пробелах
В следующих разделах для краткости в примерах синтаксиса показан один пробел, но допускается использовать по нескольку пробелов везде, где указан один пробел.
Два числа не должны быть разделены запятыми или пробелами, но это можно сделать только в том случае, если результирующая строка является однозначной. Например, 2..3
на самом деле два числа: "2". И ".3". Аналогичным образом, 2-3
имеет значение "2" и "-3". Пробелы до и после команд ставить необязательно.
Синтаксис
Синтаксис использования атрибута XAML для StreamGeometry расширяемого языка разметки приложений состоит из необязательного FillRule значения и одного или нескольких описаний рисунков.
Использование атрибута XAML на StreamGeometry |
---|
< объект property =" [ ] figureDescription fillRule [ ]figureDescription *" ... /> |
Синтаксис использования атрибута XAML для PathFigureCollection расширяемого языка разметки приложений состоит из одного или нескольких описаний рисунков.
Использование атрибута XAML на PathFigureCollection |
---|
< объект property =" figureDescription [ ]figureDescription *" ... /> |
Срок | Description |
---|---|
fillRule | System.Windows.Media.FillRule Указывает, используется ли StreamGeometry или NonzeroFillRuleиспользуется EvenOdd . - F0 задает EvenOdd правило заполнения.- F1 задает Nonzero правило заполнения.Если эта команда опущена, подпат использует поведение по умолчанию.EvenOdd Если эта команда используется, ее необходимо размещать вначале. |
figureDescription | Фигура, состоящая из команды перемещения, команд рисования и необязательной команды закрытия.moveCommand drawCommands [ closeCommand ] |
moveCommand | Команда перемещения, которая указывает начальную точку фигуры. См. раздел "Команда перемещения". |
drawCommands | Одна или несколько команд рисования, описывающих содержимое фигуры. См. раздел "Команды рисования". |
closeCommand | Необязательная команда, которая закрывает фигуру. См. раздел "Закрыть команду". |
Команда перемещения
Задает начальную точку новой фигуры.
Синтаксис |
---|
M startPoint- или - m startPoint |
Срок | Description |
---|---|
startPoint | System.Windows.Point Начальная точка новой фигуры. |
Верхний регистр указывает, что является абсолютным значением; нижний регистр M
m
указывает, что startPoint
startPoint
это смещение до предыдущей точки или (0,0), если нет. Если после команды перемещения указано несколько точек, будет нарисована линия к этим точкам, как в случае указания команды рисования линии.
Команды рисования
Команда рисования может состоять из нескольких команд формы. Имеются следующие команды формы: линия, горизонтальная линия, вертикальная линия, кривая Безье третьего порядка, кривая Безье второго порядка, гладкая кривая Безье третьего порядка, гладкая кривая Безье второго порядка и эллиптическая дуга.
Все команды можно вводить как прописными, так и строчными буквами. Прописными буквами определяются абсолютные значения, а строчными —относительные. Контрольная точка для этого сегмента указывается относительно конечной точки в предыдущем примере.
Совет
При последовательном вводе нескольких команд одного типа можно опустить дубликат команды; например, L 100,200 300,400
эквивалентно L 100,200 L 300,400
.
Команда рисования линии
Создает прямую линию между текущей и заданной конечной точками. l 20 30
и L 20,30
являются примерами допустимых команд строки .
Синтаксис |
---|
L конечная точка- или - l конечная точка |
Срок | Description |
---|---|
endPoint | System.Windows.Point Конечная точка строки. |
Верхний регистр указывает, что является абсолютным значением; нижний регистр L
l
указывает, что endPoint
endPoint
это смещение до предыдущей точки или (0,0), если нет.
Команда рисования горизонтальной линии
Создает горизонтальную линию между текущей точкой и заданной координатой X. H 90
— пример допустимой команды рисования горизонтальной линии.
Синтаксис |
---|
H x- или - h x |
Срок | Description |
---|---|
x | System.Double Координата X конечной точки линии. |
Верхний регистр указывает, что является абсолютным значением; нижний регистр H
h
указывает, что x
x
это смещение до предыдущей точки или (0,0), если нет.
Команда рисования вертикальной линии
Создает вертикальную линию между текущей точкой и заданной координатой Y. v 90
— пример допустимой команды рисования вертикальной линии.
Синтаксис |
---|
V y- или - v y |
Срок | Description |
---|---|
г | System.Double Координата Y конечной точки линии. |
Верхний регистр указывает, что является абсолютным значением; нижний регистр V
v
указывает, что y
y
это смещение до предыдущей точки или (0,0), если нет.
Команда рисования кривой Безье третьего порядка
Создает кубическую кривую Bezier между текущей точкой и указанной конечной точкой с помощью двух указанных контрольных точек (controlPoint
1 и controlPoint
2). C 100,200 200,400 300,200
— пример допустимой команды рисования кривой линии.
Синтаксис |
---|
C controlPoint 1controlPoint 2endPoint - или - c controlPoint 1controlPoint 2endPoint |
Срок | Description |
---|---|
controlPoint 1 |
System.Windows.Point Первая контрольная точка кривой, которая определяет начальную касательную к кривой. |
controlPoint 2 |
System.Windows.Point Вторая контрольная точка кривой, которая определяет конечную касательную к кривой. |
endPoint |
System.Windows.Point Точка для рисования кривой. |
Команда рисования кривой Безье второго порядка
Создает квадратную кривую Bezier между текущей точкой и указанной конечной точкой с помощью указанной контрольной точки (controlPoint
). q 100,200 300,200
— пример допустимой команды рисования кривой Безье второго порядка.
Синтаксис |
---|
Q controlPoint endPoint - или - q controlPoint endPoint |
Срок | Description |
---|---|
controlPoint |
System.Windows.Point Контрольная точка кривой, которая определяет начальную и конечную касательные к кривой. |
endPoint |
System.Windows.Point Точка для рисования кривой. |
Команда рисования гладкой кривой Безье третьего порядка
Создает кривую Безье третьего порядка между текущей и заданной конечной точками. Предполагается, что первая контрольная точка является отражением второй контрольной точки предыдущей команды относительно текущей точки. Если нет предыдущей команды или если предыдущая команда не является командой рисования кривой Безье третьего порядка или командой рисования гладкой кривой Безье третьего порядка, считается, что первая контрольная точка совпадает с текущей точкой. Вторая контрольная точка, контрольная точка конца кривой, задается controlPoint
2. Например, S 100,200 200,300
допустимая команда гладкой кубической кривой Bezier.
Синтаксис |
---|
S controlPoint 2endPoint - или - s controlPoint 2endPoint |
Срок | Description |
---|---|
controlPoint 2 |
System.Windows.Point Контрольная точка кривой, которая определяет конечную касательную к кривой. |
endPoint |
System.Windows.Point Точка для рисования кривой. |
Команда рисования гладкой кривой Безье второго порядка
Создает кривую Безье второго порядка между текущей и заданной конечной точками. Предполагается, что контрольная точка является отражением контрольной точки предыдущей команды относительно текущей точки. Если нет предыдущей команды или если предыдущая команда не является командой рисования кривой Безье второго порядка или командой рисования гладкой кривой Безье второго порядка, считается, что контрольная точка совпадает с текущей точкой.
Синтаксис |
---|
T endPoint - или - t endPoint |
Срок | Description |
---|---|
endPoint |
System.Windows.Point Точка для рисования кривой. |
Команда рисования эллиптической дуги
Создает эллиптическую дугу между текущей и заданной конечной точками.
Синтаксис |
---|
A size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint - или - a size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint |
Срок | Description |
---|---|
size |
System.Windows.Size Радиусы арки X и Y. |
rotationAngle |
System.Double Поворот эллипса в градусах. |
isLargeArcFlag |
Значение 1, если угол дуги должен быть 180 градусов или больше, в противном случае — значение 0. |
sweepDirectionFlag |
Значение 1, если дуга рисуется в направлении положительного угла, в противном случае — значение 0. |
endPoint |
System.Windows.Point Точка, в которую рисуется дуга. |
Команда закрытия
Заканчивает текущую фигуру и создает линию, соединяющую текущую точку с начальной точкой фигуры. Эта команда создает соединительную линию (угол) между последним и первым сегментами фигуры.
Синтаксис |
---|
Z - или - z |
Синтаксис точки
Описывает координаты x-и y точки, где (0,0) — левый верхний угол.
Синтаксис |
---|
x , y - или - x y |
Срок | Description |
---|---|
x |
System.Double Координата X точки. |
y |
System.Double Координата Y точки. |
Специальные значения
Вместо стандартных числовых значений можно использовать следующие специальные значения. Эти значения чувствительны к регистру.
Infinity
Double.PositiveInfinityПредставляет .
-бесконечность
Double.NegativeInfinityПредставляет .
Не число
Double.NaNПредставляет .
Можно также использовать экспоненциальное представление чисел. Например, +1.e17
является допустимым значением.
См. также
.NET Desktop feedback