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