Поделиться через


Синтаксис разметки пути

Пути рассматриваются в разделах "Фигуры" и "Базовый рисунок" в обзоре WPF и обзоре геометрии, однако в этом разделе подробно описаны мощные и сложные мини-языки, которые можно использовать для указания геометрий пути более компактно с помощью языка разметки расширяемых приложений (XAML).

Предпосылки

Чтобы понять эту тему, необходимо ознакомиться с основными функциями Geometry объектов. Дополнительные сведения см. вобзоре геометрии.

StreamGeometry и PathFigureCollection Mini-Languages

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
< objectсвойство="[ fillRule] figureDescription[ figureDescription]* " ... />

Синтаксис использования атрибута в расширяемом языке разметки приложений (XAML) для PathFigureCollection состоит из одного или нескольких описаний фигур.

Использование атрибута XAML PathFigureCollection
< objectсвойство="figureDescription[ figureDescription]*" ... />
Срок Описание
fillRule System.Windows.Media.FillRule

Указывает, использует ли StreamGeometryEvenOdd или NonzeroFillRule.

- F0 задает EvenOdd правило заполнения.
- F1 задает Nonzero правило заполнения.

Если эта команда опущена, подпат использует поведение по умолчанию.EvenOdd Если указать эту команду, необходимо сначала поместить ее.
описание изображения Фигура, состоящая из команды перемещения, команд рисования и команды закрытия, которая является необязательной.

moveCommand drawCommands [ closeCommand ]
moveCommand Команда перемещения, указывающая начальную точку рисунка. См. раздел «Команда перемещения».
drawCommands Одна или несколько команд рисования, описывающих содержимое рисунка. См. раздел "Команды рисования ".
ЗакрытьКоманду Необязательная команда для закрытия рисунка. См. раздел "Закрыть команду ".

Команда перемещения

Указывает начальную точку нового рисунка.

Синтаксис
M точка старта

-или-

m точка старта
Срок Описание
начальнаяТочка System.Windows.Point

Начальная точка нового рисунка.

Заглавная буква M указывает, что startPoint является абсолютным значением; строчная буква m указывает, что startPoint это смещение относительно предыдущей точки или (0,0), если таковая отсутствует. Если вы перечисляете несколько точек после команды перемещения, линия рисуется к этим точкам, несмотря на то, что указана команда линии.

Команды рисования

Команда рисования может состоять из нескольких команд фигур. Доступны следующие команды фигур: линия, горизонтальная линия, вертикальная линия, кубическая кривая Bezier, квадратная кривая Bezier, гладкая кубическая кривая Bezier, гладкая квадратная кривая Bezier и эллиптическая дуга.

Введите каждую команду с помощью верхнего или нижнего регистра: прописные буквы указывают абсолютные значения и строчные буквы указывают относительные значения: контрольные точки для этого сегмента относительно конечной точки предыдущего примера.

Подсказка

При последовательном вводе нескольких команд одного типа можно опустить дубликат команды; например, 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), если таковая отсутствует.

Команда кривой Безье кубической формы

Создает кубическую кривую Bezier между текущей точкой и указанной конечной точкой с помощью двух указанных контрольных точек (controlPoint1 и controlPoint2). C 100,200 200,400 300,200 является примером допустимой команды для кривой.

Синтаксис
C controlPoint1controlPoint2endPoint

-или-

c controlPoint1controlPoint2endPoint
Срок Описание
controlPoint1 System.Windows.Point

Первая контрольная точка кривой, которая определяет начальный тангенс кривой.
controlPoint2 System.Windows.Point

Вторая контрольная точка кривой, которая определяет конечный тангенс кривой.
endPoint System.Windows.Point

Точка, к которой рисуется кривая.

Команда кривых квадратических Bezier

Создает квадратную кривую Bezier между текущей точкой и указанной конечной точкой с помощью указанной контрольной точки (controlPoint). q 100,200 300,200 является примером допустимой команды квадратной кривой Bezier.

Синтаксис
Q controlPoint endPoint

-или-

q controlPoint endPoint
Срок Описание
controlPoint System.Windows.Point

Контрольная точка кривой, которая определяет начальные и конечные тангенсы кривой.
endPoint System.Windows.Point

Точка, к которой рисуется кривая.

Команда гладкой кубической кривой Bezier

Создает кубическую кривую Bezier между текущей точкой и указанной конечной точкой. Предполагается, что первая контрольная точка является отражением второй контрольной точки предыдущей команды относительно текущей точки. Если предыдущей команды нет или если предыдущая команда не была кубической кривой Bezier или гладкой командой кривой Bezier, предположим, что первая контрольная точка совпадает с текущей точкой. Вторая контрольная точка, контрольная точка для конца кривой, указывается controlPoint2. Например, S 100,200 200,300 допустимая команда гладкой кубической кривой Bezier.

Синтаксис
S controlPoint2endPoint

-или-

s controlPoint2endPoint
Срок Описание
controlPoint2 System.Windows.Point

Контрольная точка кривой, которая определяет конечный тангенс кривой.
endPoint System.Windows.Point

Точка, к которой рисуется кривая.

Команда гладкой квадратной кривой Bezier

Создает квадратную кривую Bezier между текущей точкой и указанной конечной точкой. Предполагается, что контрольная точка отражает контрольную точку предыдущей команды относительно текущей точки. Если нет предыдущей команды или если предыдущая команда не была командой квадратичной кривой Безье или гладкой квадратичной кривой Безье, точка управления совпадает с текущей точкой.

Синтаксис
T endPoint

-или-

t endPoint
Срок Описание
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 является допустимым значением.

См. также