Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Узнайте о командах перемещения и рисования (мини-языке), которые можно использовать для указания геометрий пути в качестве значения атрибута XAML. Команды перемещения и рисования используются многими инструментами проектирования и графики, которые могут выводить векторный рисунок или фигуру в качестве формата сериализации и обмена.
Свойства, использующие строки команд перемещения и рисования
Синтаксис команды перемещения и рисования поддерживается внутренним преобразователем типов для XAML, который анализирует команды и создает графическое представление во время выполнения. Это представление в основном является готовым набором векторов, готовых к презентации. Векторы сами не завершают сведения о презентации; Вам по-прежнему потребуется задать другие значения для элементов. Для объекта Path также требуются значения для Fill, обводки и других свойств, а затем этот Path должен быть подключен к визуальному дереву каким-то образом. Для объекта PathIcon задайте свойство Foreground .
В среде выполнения Windows есть два свойства, которые могут использовать строку, представляющую команды перемещения и рисования: Path.Data и PathIcon.Data. Если задать одно из этих свойств путем указания команд перемещения и рисования, обычно он устанавливается в качестве значения атрибута XAML вместе с другими обязательными атрибутами этого элемента. Не вдаваясь в детали, это выглядит так:
<Path x:Name="Arrow" Fill="White" Height="11" Width="9.67"
Data="M4.12,0 L9.67,5.47 L4.12,10.94 L0,10.88 L5.56,5.47 L0,0.06" />
Использование команд перемещения и рисования по сравнению с использованием PathGeometry
Для среды выполнения XAML в Windows команды перемещения и рисования создают PathGeometry с одним объектом PathFigure со значением свойства "Фигуры". Каждая команда рисования создает производный класс PathSegment в коллекции Сегментов одного PathFigure, команда перемещения изменяет Начальную точку, а существование команды закрытия устанавливает IsClosed на true. Эту структуру можно перемещать как объектную модель при проверке значений данных во время выполнения.
Базовый синтаксис
Синтаксис для команд перемещения и рисования можно суммировать следующим образом:
- Начните с необязательного правила заполнения. Обычно этот параметр указывается только в том случае, если не требуется значение по умолчанию EvenOdd . (Подробнее о EvenOdd позже.)
- Укажите ровно одну команду перемещения.
- Укажите одну или несколько команд рисования.
- Укажите команду закрытия. Вы можете опустить команду закрытия, но это оставит окно открытым (что нетипично).
Общие правила этого синтаксиса:
- Каждая команда представлена ровно одной буквой.
- Это буква может быть верхним или нижним регистром. Дело имеет значение, как описано.
- Каждой команде, за исключением команды закрытия, обычно следуют одно или несколько чисел.
- Если для команды несколько чисел, разделите запятой или пробелом.
[fillRule]moveCommanddrawCommand[drawCommand*][closeCommand]
Многие команды рисования используют точки, в которых вы предоставляете значение x,y . Всякий раз, когда отображается заполнитель точек, вы можете предположить, что вы предоставляете два десятичных значения для x,y координаты точки.
Пробелы часто могут быть опущены, если результат не неоднозначный. Если вы используете запятые в качестве разделителей для всех числовых наборов (точек и размера), вы действительно можете опустить все пробелы. Например, это использование является законным: F1M0,58L2,56L6,60L13,51L15,53L6,64z Обычно для ясности между командами включают пробелы.
Не используйте запятые в качестве десятичного разделителя для десятичных чисел; командная строка интерпретируется в XAML и не учитывает языковые и региональные соглашения о форматировании чисел, которые отличаются от тех, которые используются в языковом стандарте en-us.
Особенности синтаксиса
Правило заливки
Существует два возможных значения для необязательного правила заполнения: F0 или F1. (F всегда является заглавной буквой.) F0 — это значение по умолчанию; он создает поведение заполнения EvenOdd, поэтому его обычно не указывают. Используйте F1, чтобы получить поведение заливки неравной нулю. Эти значения заливки соответствуют значениям перечисления FillRule .
Команда перемещения
Указывает начальную точку нового рисунка.
| Синтаксис |
|---|
M
startPoint - или - m
startPoint |
| Срок | Description |
|---|---|
| startPoint |
Точка Начальная точка нового рисунка. |
Верхний регистр 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 являются примерами допустимых команд строки. Определяет эквивалент объекта LineGeometry .
| Синтаксис |
|---|
L
конечная точка - или - l
конечная точка |
| Срок | Description |
|---|---|
| конечная точка |
Точка Конечная точка строки. |
Команда горизонтальной линии
Создает горизонтальную линию между текущей точкой и указанной координатой x.
H 90 является примером допустимой команды горизонтальной строки.
| Синтаксис |
|---|
H
x -или- h
x |
| Срок | Description |
|---|---|
| x |
Двойной Координата x конечной точки линии. |
Команда вертикальной линии
Создает вертикальную линию между текущей точкой и указанной координатой y.
v 90 пример допустимой команды вертикальной строки.
| Синтаксис |
|---|
V
y -или- v
y |
| Срок | Description |
|---|---|
| y |
Двойной Координата y конечной точки линии. |
Команда кубической кривой Безье
Создает кубическую кривую Bézier между текущей точкой и указанной конечной точкой с помощью двух указанных точек управления (controlPoint1 и controlPoint2).
C 100,200 200,400 300,200 — это пример допустимой команды кривой. Определяет эквивалент объекта PathGeometry с объектом BezierSegment .
| Синтаксис |
|---|
C
controlPoint1controlPoint2endPoint -или- c
controlPoint1controlPoint2endPoint |
| Срок | Description |
|---|---|
| controlPoint1 |
Точка Первая контрольная точка кривой, которая определяет начальный тангенс кривой. |
| controlPoint2 |
Точка Вторая контрольная точка кривой, которая определяет конечный тангенс кривой. |
| конечная точка |
Точка Точка, к которой рисуется кривая. |
Команда квадратической кривой Безье
Создает квадратную кривую Bézier между текущей точкой и указанной конечной точкой с помощью указанной контрольной точки (controlPoint).
q 100,200 300,200 является примером допустимой команды квадратной кривой Bézier. Определяет эквивалент PathGeometry с QuadraticBezierSegment.
| Синтаксис |
|---|
Q
controlPoint endPoint -или- q
controlPoint endPoint |
| Срок | Description |
|---|---|
| controlPoint |
Точка Контрольная точка кривой, которая определяет начальные и конечные тангенсы кривой. |
| конечная точка |
Точка Точка, к которой рисуется кривая. |
Команда гладкой кубической кривой Bézier
Создает кубическую кривую Bézier между текущей точкой и указанной конечной точкой. Предполагается, что первая контрольная точка является отражением второй контрольной точки предыдущей команды относительно текущей точки. Если предыдущей команды нет или если предыдущая команда не являлась командой кубической кривой Безье или командой гладкой кубической кривой Безье, предположим, что первая контрольная точка совпадает с текущей точкой. Вторая контрольная точка — контрольная точка для конца кривой — определяется элементом controlPoint2. Например, S 100,200 200,300 — это допустимая команда для гладкой кубической кривой Безье. Эта команда определяет эквивалент PathGeometry с BezierSegment, где ранее располагался сегмент кривой.
| Синтаксис |
|---|
S
controlPoint2endPoint -или- s
controlPoint2 endPoint |
| Срок | Description |
|---|---|
| controlPoint2 |
Точка Контрольная точка кривой, которая определяет конечный тангенс кривой. |
| конечная точка |
Точка Точка, к которой рисуется кривая. |
Команда гладкой квадратичной кривой Безье
Создает квадратную кривую Bézier между текущей точкой и указанной конечной точкой. Предполагается, что контрольная точка отражает контрольную точку предыдущей команды относительно текущей точки. Если предыдущей команды нет или если предыдущая команда не была квадратичной командой кривой Безье или гладкой квадратичной кривой Безье, точка управления совпадает с текущей точкой. Эта команда определяет эквивалент PathGeometry с QuadraticBezierSegment, где был предыдущий сегмент кривой.
| Синтаксис |
|---|
T
controlPointendPoint -или- t
controlPointendPoint |
| Срок | Description |
|---|---|
| controlPoint |
Точка Контрольная точка кривой, которая определяет начальный и тангенс кривой. |
| конечная точка |
Точка Точка, к которой рисуется кривая. |
Команда эллиптической дуги
Создает эллиптическую дугу между текущей точкой и указанной конечной точкой. Определяет эквивалент PathGeometry с ArcSegment.
| Синтаксис |
|---|
A
sizeRotationAngleisLargeArcFlagsweepDirectionFlagendPoint -или- a
sizeRotationAngleisLargeArcFlagsweepDirectionFlagendPoint |
| Срок | Description |
|---|---|
| размер |
Размер Радиус x и радиус y дуги. |
| rotationAngle |
Двойной Поворот эллипса в градусах. |
| isLargeArcFlag | Установите значение 1, если угол дуги должен иметь значение 180 градусов или больше; в противном случае задайте значение 0. |
| sweepDirectionFlag | Установите значение 1, если дуга рисуется в направлении положительного угла; в противном случае задайте значение 0. |
| конечная точка |
Точка Точка, к которой рисуется дуга. |
Закрыть команду
Заканчивает текущую фигуру и создает строку, которая подключает текущую точку к начальной точке рисунка. Эта команда создает соединение строк (угол) между последним сегментом и первым сегментом рисунка.
| Синтаксис |
|---|
Z -или- z |
Синтаксис точки
Описывает координату x и y точки. См. также Точка.
| Синтаксис |
|---|
|
x,y -или- xy |
| Срок | Description |
|---|---|
| x |
Двойной Координата x точки. |
| y |
Двойной Координата y точки. |
Дополнительные заметки
Вместо стандартного числового значения можно также использовать следующие специальные значения. Эти значения чувствительны к регистру.
- Бесконечность: представляет PositiveInfinity.
- -Бесконечность: представляет Отрицательную Бесконечность.
- NaN: представляет NaN.
Вместо использования десятичных или целых чисел можно использовать научные нотации. Например, +1.e17 является допустимым значением.
Инструменты для проектирования, создающие команды перемещения и рисования
Использование инструмента Pen и других инструментов рисования в Blend для Microsoft Visual Studio 2015 обычно создает объект Path с командами перемещения и рисования.
Вы можете увидеть существующие данные команд перемещения и рисования в некоторых частях элементов управления, определенных в стандартных шаблонах XAML среды выполнения Windows для этих элементов. Например, некоторые элементы управления используют PathIcon с данными, определенными как команды перемещения и рисования.
Существуют экспортеры или подключаемые модули, доступные для других часто используемых средств проектирования векторной графики, которые могут выводить вектор в форме XAML. Обычно они создают объекты Path в контейнере макета с командами перемещения и рисования для Path.Data. В XAML может быть несколько элементов Path, чтобы применить различные кисти. Многие из этих экспортеров или подключаемых модулей изначально были написаны для XAML Windows Presentation Foundation (WPF) или Silverlight, но синтаксис пути XAML идентичен Windows Runtime XAML. Как правило, можно использовать блоки XAML из экспортера и вставить их прямо на страницу XAML среды выполнения Windows. (Однако вы не сможете использовать radialGradientBrush, если это было частью преобразованного XAML, так как XAML среды выполнения Windows не поддерживает эту кисть.)
Связанные темы
Windows developer