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


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

Обновлен: Ноябрь 2007

Более подробные сведения о путях приведены в разделах Обзор фигур и базовых средств рисования в приложении WPF и Общие сведения о классе Geometry. В этом подразделе подробно описывается эффективный комплексный мини-язык, который можно использовать для более компактного определения геометрических объектов пути с помощью Язык XAML (Extensible Application Markup Language).  

В этом разделе содержатся следующие подразделы.

Необходимые компоненты

Перед изучением этого раздела следует ознакомиться с основными возможностями объектов класса Geometry. Дополнительные сведения см. в разделе Общие сведения о классе 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 см. в разделе Общие сведения о классе Geometry.

Примечание. Использование пробелов

Для краткости в разделах синтаксиса далее отображается один пробел, но также допускается использование нескольких пробелов вместо одного.

В случае однозначности результирующей строки два числа не обязательно должны разделяться запятыми или пробелами. Например, строка 2..3 фактически представляет два числа: «2,0» и «0,3». Аналогичным образом, строка 2-3 представляет числа «2» и «-3». Пробелы не требуются ни до, ни после команды.

Синтаксис

Использование синтаксиса атрибутов Язык XAML (Extensible Application Markup Language) для объекта StreamGeometry состоит из необязательного значения FillRule и одного или нескольких следующих описаний.

Использование атрибута XAML StreamGeometry

<objectproperty="[fillRule] figureDescription[figureDescription]*" ... />

Использование синтаксиса атрибутов Язык XAML (Extensible Application Markup Language) для PathFigureCollection состоит из одного или нескольких следующих описаний.

Использование атрибута XAML PathFigureCollection

<objectproperty="figureDescription[figureDescription]*" ... />

Термин

Описание

fillRule

System.Windows.Media.FillRule

Определение правила, используемого в свойстве StreamGeometry: EvenOdd или Nonzero FillRule.

  • F0 — правило заполнения EvenOdd.

  • F1 — правило заполнения Nonzero.

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

figureDescription

Фигура, состоящая из команды перемещения, команд рисования и необязательной команды закрытия.

moveCommanddrawCommands [closeCommand]

moveCommand

Команда перемещения, которая указывает начальную точку фигуры. См. подраздел Команда перемещения.

drawCommands

Одна или несколько команд рисования, описывающих содержимое фигуры. См. подраздел Команды рисования.

closeCommand

Необязательная команда закрытия, используемая для закрытия фигуры. См. подраздел Команда закрытия.

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

Определение начальной точки новой фигуры.

Синтаксис

MstartPoint

либо

mstartPoint

Термин

Описание

startPoint

System.Windows.Point

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

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

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

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

Каждая команда вводится с помощью прописной или строчной буквы: прописные буквы определяют абсолютные значения, а строчные — относительные. Контрольные точки для этого сегмента указываются относительно конечной точки предыдущего примера. При последовательном вводе нескольких команд одного типа можно опустить повторяющуюся команду. Например, команда L 100,200 300,400 эквивалентна команде L 100,200 L 300,400. В следующей таблице описаны команды move и draw.

Линия

Создание прямой линии между текущей точкой и заданной конечной точкой. Например, l 20 30 и L 20,30 — допустимые команды line.

Синтаксис

LendPoint

либо

lendPoint

Термин

Описание

endPoint

System.Windows.Point

Конечная точка линии.

Горизонтальная линия

Создание горизонтальной линии между текущей точкой и указанной координатой по оси x. Например, H 90 — допустимая команда горизонтальной линии.

Синтаксис

H x

либо

h x

Термин

Описание

x

System.Double

Координата конечной точки линии по оси x.

Вертикальная линия

Создание вертикальной линии между текущей точкой и указанной координатой по оси y. Например, v 90 — допустимая команда вертикальной линии.

Синтаксис

V y

либо

v y

Термин

Описание

y

System.Double

Координата конечной точки линии по оси y.

Кривая Безье третьего порядка

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

Синтаксис

C controlPoint1 controlPoint2 endPoint

либо

c controlPoint1 controlPoint2 endPoint

Термин

Описание

controlPoint1

System.Windows.Point

Первая контрольная точка кривой, которая определяет начальную касательную к кривой.

controlPoint2

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

Конечная точка кривой.

Гладкая кривая Безье третьего порядка

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

Синтаксис

S controlPoint2 endPoint

либо

s controlPoint2 endPoint

Термин

Описание

controlPoint2

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.

Синтаксис

x,y

либо

x y

Термин

Описание

x

System.Double

Координата x точки.

y

System.Double

Координата y точки.

Специальные значения

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

Также можно использовать экспоненциальное представление. Например, +1.e17 является допустимым значением.

См. также

Основные понятия

Обзор фигур и базовых средств рисования в приложении WPF

Общие сведения о классе Geometry

Ссылки

Path

StreamGeometry

PathGeometry

PathFigureCollection

Другие ресурсы

Разделы руководства, посвященные геометрии

Примеры работы с геометрическими объектами

Примеры фигур