Sdílet prostřednictvím


Xamarin.Forms Obrazce: Syntaxe značek cesty

Xamarin.Forms Syntaxe značek path umožňuje kompaktně zadat geometrie cest v XAML. Syntaxe je určena jako řetězcová hodnota vlastnosti Path.Data :

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

Syntaxe značek cesty se skládá z volitelné FillRule hodnoty a jednoho nebo více popisů obrázku. Tuto syntaxi lze vyjádřit takto: <Path Data="[fillRule] figureDescription [figureDescription] * " ... />

V této syntaxi:

  • fillRule je nepovinnýXamarin.Forms.Shapes.FillRule, který určuje, zda má geometrie použít EvenOdd Nonzero FillRule F0 slouží k zadání EvenOdd pravidla vyplnění, zatímco F1 se používá k určení Nonzero pravidla výplně. Další informace opravidlech Xamarin.Forms
  • figureDescription představuje obrázek složený z příkazu pro přesunutí, kreslení příkazů a volitelného příkazu zavřít. Příkaz pro přesunutí určuje počáteční bod obrázku. Příkazy kreslení popisují obsah obrázku a volitelný příkaz zavřít obrázek zavře.

V předchozím příkladu syntaxe značek cest určuje počáteční bod pomocí příkazu pro přesunutí (M), řady rovných řádků pomocí příkazu řádku (L) a cestu zavře pomocí příkazu Zavřít (Z).

Syntaxe značek cest nevyžaduje mezery před příkazy ani za příkazy. Kromě toho dvě čísla nemusí být oddělena čárkou nebo prázdným znakem, ale toho lze dosáhnout pouze v případě, že je řetězec jednoznačný.

Tip

Syntaxe značek path je kompatibilní s definicemi cest obrázků SVG (Scalable Vector Graphics), takže může být užitečná pro přenos grafiky z formátu SVG.

Zatímco syntaxe značek cest je určena ke spotřebě v JAZYCE XAML, lze ji převést na Geometry objekt v kódu vyvoláním ConvertFromInvariantString metody ve PathGeometryConverter třídě:

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

Přesunout příkaz

Příkaz pro přesunutí určuje počáteční bod nového obrázku. Syntaxe tohoto příkazu je: M startPoint nebo m startPoint.

V této syntaxi je startPoint strukturou Point , která určuje počáteční bod nového obrázku. Pokud za příkazem přesunutí vypíšete více bodů, na tyto body se nakreslí řádek.

M 10,10 je příkladem platného příkazu pro přesunutí.

Kreslení příkazů

Příkaz kreslení se může skládat z několika příkazů obrazce. K dispozici jsou následující příkazy kreslení:

  • Čára (L nebo l).
  • Vodorovná čára (H nebo h).
  • Svislá čára (V nebo v).
  • Eliptický oblouk (A nebo a).
  • Krychlová bezierová křivka (C nebo c).
  • Kvadratická bezierová křivka (Q nebo q).
  • Plynulá krychlová bezierová křivka (S nebo s).
  • Hladké kvadratické bezierové křivky (T nebo t).

Každý příkaz kreslení je určen písmenem nerozlišující velká a malá písmena. Při postupném zadávání více než jednoho příkazu stejného typu můžete vynechat duplicitní položku příkazu. Například L 100,200 300,400 je ekvivalentní .L 100,200 L 300,400

Příkaz Řádek

Příkaz řádku vytvoří přímku mezi aktuálním bodem a zadaným koncovým bodem. Syntaxe tohoto příkazu je: L endPoint nebo l endPoint.

V této syntaxi je Point koncový bod, který představuje koncový bod řádku.

L 20,30 a L 20 30 jsou to příklady platných příkazů řádku.

Informace o vytvoření přímky jako PathGeometry objektu naleznete v tématu Vytvoření lineSegment.

Příkaz Vodorovný řádek

Příkaz vodorovné čáry vytvoří vodorovnou čáru mezi aktuálním bodem a zadanou souřadnicí x. Syntaxe tohoto příkazu je: H x nebo h x.

V této syntaxi je double x souřadnice x koncového bodu čáry.

H 90 je příkladem platného příkazu vodorovného řádku.

Příkaz svislého řádku

Příkaz svislého řádku vytvoří svislou čáru mezi aktuálním bodem a zadanou souřadnicí y. Syntaxe tohoto příkazu je: V y nebo v y.

V této syntaxi je double y souřadnice y koncového bodu čáry.

V 90 je příkladem platného příkazu svislého řádku.

Příkaz Elliptical arc

Příkaz eliptického oblouku vytvoří eliptický oblouk mezi aktuálním bodem a zadaným koncovým bodem. Syntaxe tohoto příkazu je: A size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint nebo a size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint.

V této syntaxi:

  • sizeSize představuje poloměr x a y oblouku.
  • rotationAngledouble představuje otočení tří teček ve stupních.
  • isLargeArcFlag pokud by úhel oblouku měl být 180 stupňů nebo vyšší, jinak ho nastavte na 0.
  • sweepDirectionFlag pokud je oblouk nakreslený ve směru kladného úhlu, v opačném případě ho nastavte na 0.
  • endPoint je oblouk Point , na který je nakreslen.

A 150,150 0 1,0 150,-150 je příkladem platného příkazu eliptického oblouku.

Informace o vytvoření eliptického oblouku PathGeometry jako objektu naleznete v tématu Vytvoření arcSegment.

Příkaz krychlové Bezierovy křivky

Příkaz krychlové Bezierovy křivky vytvoří krychlovou bezierovou křivku mezi aktuálním bodem a zadaným koncovým bodem pomocí dvou zadaných kontrolních bodů. Syntaxe tohoto příkazu je: C controlPoint1 controlPoint2 endPoint nebo c controlPoint1 controlPoint2 endPoint2.

V této syntaxi:

  • controlPoint1 je Point bod, který představuje první řídicí bod křivky, který určuje počáteční tangens křivky.
  • controlPoint2 je Point bod, který představuje druhý řídicí bod křivky, který určuje koncovou tangens křivky.
  • endPoint je bod Point , ke kterému je křivka nakreslena.

C 100,200 200,400 300,200 je příkladem platného příkazu krychlové bezierovy křivky.

Informace o vytvoření krychlové bezierové křivky jako PathGeometry objektu naleznete v tématu Vytvoření BezierSegment.

Příkaz kvadratické bezierovy křivky

Příkaz kvadratické křivky Bezier vytvoří kvadratickou bezierovou křivku mezi aktuálním bodem a zadaným koncovým bodem pomocí zadaného řídicího bodu. Syntaxe tohoto příkazu je: Q controlPoint endPoint nebo q controlPoint endPoint.

V této syntaxi:

  • controlPoint je Point řídicí bod křivky, který určuje počáteční a koncové tangensy křivky.
  • endPoint je bod Point , ke kterému je křivka nakreslena.

Q 100,200 300,200 je příkladem platného příkazu kvadratické křivky Bezier.

Informace o vytvoření kvadratické Bezierovy křivky jako PathGeometry objektu naleznete v tématu Vytvoření quadraticBezierSegment.

Příkaz hladké krychlové bezierovy křivky

Příkaz hladké krychlové Bezierovy křivky vytvoří krychlovou bezierovou křivku mezi aktuálním bodem a zadaným koncovým bodem pomocí zadaného řídicího bodu. Syntaxe pro tento příkaz je: S controlPoint2 endPoint nebo scontrolPoint2 endPoint.

V této syntaxi:

  • controlPoint2 je Point bod, který představuje druhý řídicí bod křivky, který určuje koncovou tangens křivky.
  • endPoint je bod Point , ke kterému je křivka nakreslena.

Předpokládá se, že první řídicí bod je odrazem druhého řídicího bodu předchozího příkazu vzhledem k aktuálnímu bodu. Pokud neexistuje žádný předchozí příkaz nebo předchozí příkaz nebyl krychlovým příkazem bezierovy křivky nebo příkazem hladké krychlové Bezierovy křivky, předpokládá se, že první řídicí bod bude shodný s aktuálním bodem.

S 100,200 200,300 je příkladem platného příkazu krychlové krychlové křivky Bezier.

Příkaz hladké kvadratické křivky Bezier

Příkaz hladké kvadratické křivky Bezier vytvoří kvadratickou bezierovou křivku mezi aktuálním bodem a zadaným koncovým bodem pomocí řídicího bodu. Syntaxe tohoto příkazu je: T endPoint nebo t endPoint.

V této syntaxi je Point koncový bod, který představuje bod, na který je křivka vykreslena.

Řídicí bod se předpokládá jako odraz řídicího bodu předchozího příkazu vzhledem k aktuálnímu bodu. Pokud neexistuje žádný předchozí příkaz nebo pokud předchozí příkaz nebyl kvadratickou bezierovou křivkou nebo hladký kvadratický příkaz bezierovy křivky, předpokládá se, že se řídicí bod shoduje s aktuálním bodem.

T 100,30 je příkladem platného příkazu hladké kvadratické krychlové křivky Bezier.

Zavřít příkaz

Příkaz Zavřít ukončí aktuální obrázek a vytvoří čáru, která spojuje aktuální bod s výchozím bodem obrázku. Proto tento příkaz vytvoří spojnici mezi posledním segmentem a prvním segmentem obrázku.

Syntaxe příkazu zavřít je: Z nebo z.

Další hodnoty

Místo standardní číselné hodnoty můžete také použít následující speciální hodnoty s rozlišováním velkých a malých písmen:

  • Infinity představuje double.PositiveInfinity.
  • -Infinity představuje double.NegativeInfinity.
  • NaN představuje double.NaN.

Kromě toho můžete použít i zápis nerozlišující velká a malá písmena. +1.e17 Proto je platná hodnota.