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


Xamarin.Forms Фигуры: синтаксис разметки пути

Xamarin.Forms Синтаксис разметки пути позволяет компактно указывать геометрии пути в XAML. Синтаксис указывается как строковое значение Path.Data для свойства:

<Path Stroke="Black"
      Data="M13.908992,16.207977 L32.000049,16.207977 32.000049,31.999985 13.908992,30.109983Z" />

Синтаксис разметки пути состоит из необязательного FillRule значения и одного или нескольких описаний рисунков. Этот синтаксис можно выразить следующим образом: <Path Data="[fillRule] рисунокDescription [рисунокDescription] * " ... />

В этом синтаксисе:

  • fillRule является необязательным Xamarin.Forms.Shapes.FillRule , который указывает, следует ли использовать EvenOdd геометрию или Nonzero FillRule. F0 используется для указания EvenOdd правила заполнения, а F1 используется для указания Nonzero правила заполнения. Дополнительные сведения о правилах заполнения см. в разделе Xamarin.Forms "Фигуры: правила заполнения".
  • figureDescription представляет фигуру, состоящую из команды перемещения, команд рисования и необязательной команды закрытия. Команда перемещения указывает начальную точку рисунка. Команды рисования описывают содержимое рисунка, а необязательная команда закрытия закрывает рисунок.

В приведенном выше примере синтаксис разметки пути указывает начальную точку с помощью команды перемещения (M), серию прямых строк с помощью команды строки (L) и закрывает путь с помощью команды close (Z).

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

Совет

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

Хотя синтаксис разметки пути предназначен для использования в XAML, его можно преобразовать Geometry в объект в коде, вызвав ConvertFromInvariantString метод в PathGeometryConverter классе:

Geometry pathData = (Geometry)new PathGeometryConverter().ConvertFromInvariantString("M13.908992,16.207977 L32.000049,16.207977 32.000049,31.999985 13.908992,30.109983Z");

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

Команда перемещения задает начальную точку нового рисунка. Синтаксис этой команды: M startPoint или m startPoint.

В этом синтаксисе startPoint — это Point структура, указывающая начальную точку нового рисунка. Если вы перечисляете несколько точек после команды перемещения, то строка выводится на эти точки.

M 10,10 пример допустимой команды перемещения.

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

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

  • Строка (L или l).
  • Горизонтальная линия (H или h).
  • Вертикальная линия (V или v).
  • Эллиптическая дуга (A или a).
  • Кубическая кривая Bezier (C или c).
  • Квадратная кривая Bezier (Q или q).
  • Гладкая кубическая кривая Bezier (S или s).
  • Гладкая квадратная кривая Bezier (T или t).

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

Команда "Строка"

Команда строки создает прямую линию между текущей точкой и указанной конечной точкой. Синтаксис этой команды: L endPoint или l endPoint.

В этом синтаксисе endPoint представляет Point конечную точку строки.

L 20,30 и L 20 30 являются примерами допустимых команд строки.

Сведения о создании прямой линии в качестве PathGeometry объекта см. в разделе "Создание LineSegment".

Команда горизонтальной строки

Команда горизонтальной строки создает горизонтальную линию между текущей точкой и указанной координатой x. Синтаксис этой команды: H x или h x.

В этом синтаксисе x представляет double координату x конечной точки линии.

H 90 — пример допустимой команды рисования горизонтальной линии.

Команда вертикальной строки

Команда вертикальной строки создает вертикальную линию между текущей точкой и указанной координатой y. Синтаксис для этой команды: V y или v y.

В этом синтаксисе y представляет double координату y конечной точки линии.

V 90 — пример допустимой команды рисования вертикальной линии.

Команда эллиптической дуги

Команда эллиптической дуги создает эллиптические дуги между текущей точкой и указанной конечной точкой. Синтаксис этой команды: A size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint или a size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint.

В этом синтаксисе:

  • size — это объект Size , представляющий x-и y-радиус дуги.
  • rotationAngledouble представляет поворот многоточия в градусах.
  • isLargeArcFlag должно быть установлено значение 1, если угол дуги должен иметь значение 180 градусов или больше, в противном случае задайте значение 0.
  • sweepDirectionFlag Должно быть установлено значение 1, если дуга рисуется в направлении положительного угла, в противном случае задайте значение 0.
  • endPoint — это то Point , к чему рисуется дуга.

A 150,150 0 1,0 150,-150 является примером допустимой эллиптической команды arc.

Сведения о создании эллиптической дуги в качестве PathGeometry объекта см. в разделе "Создание ArcSegment".

Команда кривой «Кубическая безье»

Команда кубической кривой Bezier создает кубическую кривую Bezier между текущей точкой и указанной конечной точкой с помощью двух указанных контрольных точек. Синтаксис этой команды: C controlPoint1 controlPoint2 endPoint2 или c controlPoint1 controlPoint2 endPoint2.

В этом синтаксисе:

  • controlPoint1 представляет Point первую контрольную точку кривой, которая определяет начальный тангенс кривой.
  • controlPoint2 представляет Point вторую контрольную точку кривой, которая определяет конечный тангенс кривой.
  • EndPoint — это точка Point , в которой рисуется кривая.

C 100,200 200,400 300,200 является примером допустимой команды кривой кубической bezier.

Сведения о создании кубической кривой Bezier в качестве PathGeometry объекта см. в разделе "Создание BezierSegment".

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

Команда квадратной кривой Bezier создает квадратную кривую Bezier между текущей точкой и указанной конечной точкой с помощью указанной контрольной точки. Синтаксис этой команды: Q controlPoint endPoint или q controlPoint endPoint.

В этом синтаксисе:

  • controlPoint — это Point точка управления кривой, которая определяет начальные и конечные тангенсы кривой.
  • EndPoint — это точка Point , в которой рисуется кривая.

Q 100,200 300,200 — пример допустимой команды рисования кривой Безье второго порядка.

Сведения о создании квадратной кривой Bezier в качестве PathGeometry объекта см. в разделе "Создание квадратикаBezierSegment".

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

Команда гладкой кубической кривой Bezier создает кубическую кривую Bezier между текущей точкой и указанной конечной точкой с помощью указанной контрольной точки. Синтаксис этой команды: S controlPoint2 endPoint или scontrolPoint2 endPoint2.

В этом синтаксисе:

  • controlPoint2 представляет Point вторую контрольную точку кривой, которая определяет конечный тангенс кривой.
  • EndPoint — это точка Point , в которой рисуется кривая.

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

S 100,200 200,300 пример допустимой команды гладкой кубической кривой Bezier.

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

Команда гладкой квадратной кривой Bezier создает квадратную кривую Bezier между текущей точкой и указанной конечной точкой с помощью контрольной точки. Синтаксис этой команды: T endPoint или t endPoint.

В этом синтаксисе endPoint представляет Point точку, к которой рисуется кривая.

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

T 100,30 является примером допустимой команды гладкой квадратной кривой Bezier.

Закрыть команду

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

Синтаксис для команды close: Z или z.

Дополнительные значения

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

  • Infinitydouble.PositiveInfinityпредставляет .
  • -Infinitydouble.NegativeInfinityпредставляет .
  • NaNdouble.NaNпредставляет .

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