Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Cesty jsou popsány v obrazcích a základním výkresu v přehledu WPF a přehled geometrie, ale toto téma podrobně popisuje výkonné a složité minijazyčné jazyky, které můžete použít k určení geometrie cest kompaktněji pomocí jazyka XAML (Extensible Application Markup Language).
Požadavky
Abyste pochopili toto téma, měli byste být obeznámeni se základními funkcemi Geometry objektů. Další informace naleznete v přehledu geometrie.
StreamGeometry a PathFigureCollection Mini-Languages
WPF poskytuje dvě třídy, které poskytují mini-jazyky pro popis geometrické cesty: StreamGeometry a PathFigureCollection.
Minijazyk StreamGeometry se používá při nastavování vlastnosti typu Geometry, jako je například vlastnost Clip prvku UIElement nebo vlastnost Data prvku Path. Následující příklad používá syntaxi atributů k vytvoření StreamGeometry.
<Path Stroke="Black" Fill="Gray" Data="M 10,100 C 10,300 300,-200 300,100" />Používáte PathFigureCollection mini-jazyk při nastavování vlastnosti Figures objektu PathGeometry. Následující příklad používá syntaxi atributu k vytvoření PathFigureCollection pro PathGeometry.
<Path Stroke="Black" Fill="Gray"> <Path.Data> <PathGeometry Figures="M 10,100 C 10,300 300,-200 300,100" /> </Path.Data> </Path>
Jak vidíte v předchozích příkladech, jsou dva minijazyčné jazyky velmi podobné. Vždy je možné použít PathGeometry v jakékoli situaci, kde byste mohli použít StreamGeometry. Tak který byste měli použít? StreamGeometry Použijte, když po vytvoření není potřeba upravit cestu. PoužijtePathGeometry, pokud potřebujete upravit cestu.
Další informace o rozdílech mezi PathGeometry objekty a StreamGeometry objekty naleznete v přehledu geometrie.
Poznámka o prázdném místě
Pro stručnost se v následujících oddílech syntaxe zobrazí jedna mezera, ale při zobrazení jediné mezery je přijatelné více mezer.
Dvě čísla nemusí být ve skutečnosti oddělena čárkou nebo prázdným znakem, ale to lze provést pouze v případě, že je výsledný řetězec jednoznačný. Například 2..3 jsou ve skutečnosti dvě čísla: "2" a ".3". Podobně je 2-3 "2" a "-3". Před ani za příkazy nejsou nutné mezery.
Syntaxe
Syntaxe použití atributu XAML (Extensible Application Markup Language) pro StreamGeometry se skládá z volitelné FillRule hodnoty a jednoho nebo více popisů prvků.
| Použití atributu StreamGeometry v XAML |
|---|
<
objectproperty="[ fillRule] figureDescription[ figureDescription]* " ... /> |
Syntaxe použití atributu XAML (Extensible Application Markup Language) se PathFigureCollection skládá z jednoho nebo více popisů obrázku.
| Použití atributu PathFigureCollection XAML |
|---|
<
objectproperty="figureDescription[ figureDescription]* " ... /> |
| termín | Popis |
|---|---|
| fillRule | System.Windows.Media.FillRule Určuje, zda StreamGeometry používá EvenOdd nebo NonzeroFillRule. - F0 určuje EvenOdd pravidlo vyplnění.- F1 určuje Nonzero pravidlo vyplnění.Pokud tento příkaz vynecháte, použije dílčí cesta výchozí chování, což je EvenOdd. Pokud tento příkaz zadáte, musíte ho umístit jako první. |
| figureDescription | Obrázek složený z příkazu pro přesunutí, příkazů pro kreslení a volitelného příkazu pro zavření.moveCommand
drawCommands
[
closeCommand
]
|
| moveCommand | Příkaz pro přesunutí, který určuje počáteční bod obrázku. Podívejte se na část Příkaz přesunutí. |
| drawCommands | Jeden nebo více příkazů kreslení, které popisují obsah obrázku. Viz část Příkazy kreslení . |
| ZavřítPříkaz | Volitelný příkaz pro zavření, který zavře obrázek/diagram. Viz část Zavřít příkaz . |
Přesunout příkaz
Určuje počáteční bod nového obrázku.
| Syntaxe |
|---|
M
počáteční bod- nebo - m
počáteční bod |
| termín | Popis |
|---|---|
| počátečníBod | System.Windows.Point Počáteční bod nového obrázku |
Velká písmena M označují absolutní startPoint hodnotu; malá písmena m označují, že startPoint je posun k předchozímu bodu, nebo (0,0), pokud žádná neexistuje. Pokud za příkazem pro přesunutí vypíšete více bodů, na tyto body se nakreslí čára, i když jste zadali příkaz řádku.
Příkazy kreslení
Příkaz kreslení se může skládat z několika příkazů obrazce. K dispozici jsou následující příkazy obrazce: čára, vodorovná čára, svislá čára, krychlová bezierová křivka, kvadratická bezierová křivka, hladký krychlový bezierový oblouk, hladký kvadratický bezierový oblouk.
Každý příkaz zadáte pomocí velkého nebo malého písmena: velká písmena označují absolutní hodnoty a malá písmena označují relativní hodnoty: kontrolní body pro daný segment jsou relativní k koncovému bodu předchozího příkladu.
Návod
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říkazový řádek
Vytvoří přímku mezi aktuálním bodem a zadaným koncovým bodem.
l 20 30 a L 20,30 jsou příklady platných příkazů řádků.
| Syntaxe |
|---|
L
endPointu- nebo - l
endPointu |
| termín | Popis |
|---|---|
| koncového bodu | System.Windows.Point Koncový bod čáry. |
Velká písmena L označují absolutní endPoint hodnotu; malá písmena l označují, že endPoint je posun k předchozímu bodu, nebo (0,0), pokud žádná neexistuje.
Příkaz vodorovného řádku
Vytvoří vodorovnou čáru mezi aktuálním bodem a zadanou souřadnicí x.
H 90 je příkladem platného příkazu vodorovného řádku.
| Syntaxe |
|---|
H
x- nebo - h
x |
| termín | Popis |
|---|---|
| x | System.Double Souřadnice x koncového bodu čáry. |
Velká písmena H označují absolutní x hodnotu; malá písmena h označují, že x je posun k předchozímu bodu, nebo (0,0), pokud žádná neexistuje.
Příkaz svislé čáry
Vytvoří svislou čáru mezi aktuálním bodem a zadanou souřadnicí y.
v 90 je příkladem platného příkazu svislého řádku.
| Syntaxe |
|---|
V
y- nebo - v
y |
| termín | Popis |
|---|---|
| y | System.Double Souřadnice y koncového bodu čáry. |
Velká písmena V označují absolutní y hodnotu; malá písmena v označují, že y je posun k předchozímu bodu, nebo (0,0), pokud žádná neexistuje.
Příkaz kubické 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ů (controlPoint1 a controlPoint2).
C 100,200 200,400 300,200 je příkladem platného příkazu křivky.
| Syntaxe |
|---|
C
controlPoint1controlPoint2endPoint- nebo - c
controlPoint1controlPoint2endPoint |
| termín | Popis |
|---|---|
controlPoint1 |
System.Windows.Point První kontrolní bod křivky, který určuje počáteční tangens křivky. |
controlPoint2 |
System.Windows.Point Druhý kontrolní bod křivky, který určuje koncovou tangens křivky. |
endPoint |
System.Windows.Point Bod, na který je křivka nakreslena. |
Příkaz kvadratické bezierovy křivky
Vytvoří kvadratickou bezierovou křivku mezi aktuálním bodem a zadaným koncovým bodem pomocí zadaného řídicího bodu (controlPoint).
q 100,200 300,200 je příkladem platného příkazu kvadratické křivky Bezier.
| Syntaxe |
|---|
Q
controlPoint
endPoint
- nebo - q
controlPoint
endPoint
|
| termín | Popis |
|---|---|
controlPoint |
System.Windows.Point Kontrolní bod křivky, který určuje počáteční a koncové tangensy křivky. |
endPoint |
System.Windows.Point Bod, na který je křivka nakreslena. |
Příkaz hladké kubické Bézierovy křivky
Vytvoří krychlovou bezierovou křivku mezi aktuálním bodem a zadaným koncovým bodem. První řídicí bod se předpokládá jako odraz druhého ří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 příkaz pro kubickou Bezierovu křivku či příkaz pro hladkou kubickou Bezierovu křivku, předpokládejme, že první řídicí bod je shodný s aktuálním bodem. Druhý řídicí bod, řídicí bod pro konec křivky, je určen controlPointhodnotou 2. Jedná se například S 100,200 200,300 o platný příkaz hladké kubické křivky Bezier.
| Syntaxe |
|---|
S
controlPoint2endPoint- nebo - s
controlPoint2endPoint |
| termín | Popis |
|---|---|
controlPoint2 |
System.Windows.Point Kontrolní bod křivky, který určuje koncovou tangens křivky. |
endPoint |
System.Windows.Point Bod, na který je křivka nakreslena. |
Příkaz pro hladkou kvadratickou Bézierovu křivku
Vytvoří kvadratickou bezierovou křivku mezi aktuálním bodem a zadaným koncovým bodem. Ří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 příkaz kvadratické Bezierovy křivky nebo hladký kvadratický příkaz Bezierovy křivky, je řídicí bod shodný s aktuálním bodem.
| Syntaxe |
|---|
T
endPoint
- nebo - t
endPoint
|
| termín | Popis |
|---|---|
endPoint |
System.Windows.Point Bod, na který je křivka nakreslena. |
Příkaz eliptického oblouku
Vytvoří eliptický oblouk mezi aktuálním bodem a zadaným koncovým bodem.
| Syntaxe |
|---|
A
size
rotationAngle
isLargeArcFlag
sweepDirectionFlag
endPoint
- nebo - a
size
rotationAngle
isLargeArcFlag
sweepDirectionFlag
endPoint
|
| termín | Popis |
|---|---|
size |
System.Windows.Size Poloměr x a y oblouku. |
rotationAngle |
System.Double Otočení elipsy ve stupních. |
isLargeArcFlag |
Nastavte na 1, pokud úhel oblouku by měl být 180 stupňů nebo větší; v opačném případě nastavte hodnotu 0. |
sweepDirectionFlag |
Nastavte na hodnotu 1, pokud je oblouk nakreslený ve směru kladného úhlu; v opačném případě nastavte hodnotu 0. |
endPoint |
System.Windows.Point Bod, na který je oblouk nakreslen. |
Příkaz Zavřít
Ukončí aktuální obrázek a vytvoří čáru, která spojuje aktuální bod s výchozím bodem obrázku. Tento příkaz vytvoří spojnicové spojení (roh) mezi posledním segmentem a prvním segmentem obrázku.
| Syntaxe |
|---|
Z- nebo - z |
Syntaxe bodu
Popisuje souřadnice x a y bodu, kde (0,0) je levý horní roh.
| Syntaxe |
|---|
x
,
y
- nebo - x
y
|
| termín | Popis |
|---|---|
x |
System.Double Souřadnice x tohoto bodu. |
y |
System.Double Souřadnice bodu y. |
Speciální hodnoty
Místo standardní číselné hodnoty můžete také použít následující speciální hodnoty. U těchto hodnot se rozlišují malá a velká písmena.
Nekonečno představuje Double.PositiveInfinity.
-Nekonečno představuje Double.NegativeInfinity.
NaN Představuje Double.NaN.
Můžete také použít vědecký zápis. Jedná se například +1.e17 o platnou hodnotu.
Viz také
.NET Desktop feedback