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žítEvenOdd
Nonzero
FillRule
F0
slouží k zadáníEvenOdd
pravidla vyplnění, zatímcoF1
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
nebol
). - Vodorovná čára (
H
neboh
). - Svislá čára (
V
nebov
). - Eliptický oblouk (
A
neboa
). - Krychlová bezierová křivka (
C
neboc
). - Kvadratická bezierová křivka (
Q
neboq
). - Plynulá krychlová bezierová křivka (
S
nebos
). - Hladké kvadratické bezierové křivky (
T
nebot
).
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:
size
Size
představuje poloměr x a y oblouku.rotationAngle
double
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 obloukPoint
, 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 s
controlPoint2 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ředstavujedouble.PositiveInfinity
.-Infinity
představujedouble.NegativeInfinity
.NaN
představujedouble.NaN
.
Kromě toho můžete použít i zápis nerozlišující velká a malá písmena. +1.e17
Proto je platná hodnota.