Padopmaaksynthax
Paden worden besproken in Vormen en Eenvoudige tekening in WPF Overview en het Geometry Overview, maar in dit onderwerp wordt de krachtige en complexe minitaal beschreven die u kunt gebruiken om padgeometrieën compacter op te geven met behulp van Extensible Application Markup Language (XAML).
Voorwaarden
Als u dit onderwerp wilt begrijpen, moet u bekend zijn met de basisfuncties van Geometry objecten. Zie het Geometrieoverzichtvoor meer informatie.
StreamGeometry and PathFigureCollection Mini-Languages
WPF biedt twee klassen die minitalen bieden voor het beschrijven van geometrische paden: StreamGeometry en PathFigureCollection.
U gebruikt de StreamGeometry minitaal bij het instellen van een eigenschap van het type Geometry, zoals de eigenschap Clip van een UIElement of de eigenschap Data van een Path-element. In het volgende voorbeeld wordt de syntaxis van het kenmerk gebruikt om een StreamGeometryte maken.
<Path Stroke="Black" Fill="Gray" Data="M 10,100 C 10,300 300,-200 300,100" />
U gebruikt de PathFigureCollection-minitaal bij het instellen van de eigenschap Figures van een PathGeometry. In het volgende voorbeeld wordt een kenmerksyntaxis gebruikt om een PathFigureCollection te maken voor een PathGeometry.
<Path Stroke="Black" Fill="Gray"> <Path.Data> <PathGeometry Figures="M 10,100 C 10,300 300,-200 300,100" /> </Path.Data> </Path>
Zoals u in de voorgaande voorbeelden kunt zien, zijn de twee minitalen vergelijkbaar. Het is altijd mogelijk om een PathGeometry te gebruiken in elke situatie waarin u een StreamGeometrykunt gebruiken; Dus welke moet je gebruiken? Gebruik een StreamGeometry wanneer u het pad niet hoeft te wijzigen nadat u het hebt gemaakt; gebruik een PathGeometry als u het pad moet wijzigen.
Zie het Geometrieoverzichtvoor meer informatie over de verschillen tussen PathGeometry en StreamGeometry objecten.
Een opmerking over witruimte
Ter beknoptheid wordt één spatie weergegeven in de volgende syntaxissecties, maar meerdere spaties zijn ook acceptabel wanneer één spatie wordt weergegeven.
Twee getallen hoeven niet te worden gescheiden door een komma of witruimte, maar dit kan alleen worden gedaan wanneer de resulterende tekenreeks ondubbelzinnig is.
2..3
is bijvoorbeeld twee getallen: '2'. En '.3'. Op dezelfde manier is 2-3
'2' en '-3'. Spaties zijn ook niet vereist voor of na opdrachten.
Syntaxis
De syntaxis van het attribuut Extensible Application Markup Language (XAML) voor een StreamGeometry bestaat uit een optionele FillRule-waarde en een of meer figuurbeschrijvingen.
StreamGeometry XAML-kenmerkgebruik |
---|
<
objecteigenschap=" [ fillRule ] figureDescription [ figureDescription ]* " ... /> |
De syntaxis voor het kenmerk Extensible Application Markup Language (XAML) van een PathFigureCollection bestaat uit een of meer figuurbeschrijvingen.
PathFigureCollection XAML-kenmerkgebruik |
---|
<
objecteigenschap=" figureDescription [ figureDescription ]* " ... /> |
Term | Beschrijving |
---|---|
vulregel | System.Windows.Media.FillRule Hiermee geeft u op of de StreamGeometry de EvenOdd of NonzeroFillRulegebruikt. - F0 geeft de EvenOdd vulregel op.- F1 geeft de Nonzero vulregel op.Als u deze opdracht weglaat, gebruikt het subpad het standaardgedrag, wat EvenOddis. Als u deze opdracht opgeeft, moet u deze eerst plaatsen. |
figureDescription | Een figuur die bestaat uit een verplaatsingsopdracht, tekenopdrachten en een optionele sluitopdracht.moveCommand
drawCommands
[
closeCommand
]
|
verplaatsOpdracht | Een verplaatsingsopdracht waarmee het beginpunt van de afbeelding wordt opgegeven. Zie de sectie Verplaatscommando. |
drawCommands | Een of meer tekenopdrachten die de inhoud van de afbeelding beschrijven. Zie de sectie Tekenopdrachten. |
opdracht sluiten | Een optionele opdracht voor sluiten waarmee de afbeelding wordt gesloten. Zie de sectie Close Command. |
Opdracht Verplaatsen
Hiermee geeft men het beginpunt van een nieuwe figuur aan.
Syntaxis |
---|
M
beginPunt-of- m
beginPunt |
Term | Beschrijving |
---|---|
startPunt | System.Windows.Point Het startpunt van een nieuwe figuur. |
Een hoofdletter M
geeft aan dat startPoint
een absolute waarde is; een kleine letter m
geeft aan dat startPoint
een verschuiving is naar het vorige punt, of (0,0) als er geen bestaat. Als u meerdere punten geregistreerd hebt na het verplaatscommando, wordt er een lijn naar die punten getrokken hoewel u het lijncommando hebt opgegeven.
Tekenopdrachten
Een tekenopdracht kan bestaan uit verschillende vormopdrachten. De volgende vormopdrachten zijn beschikbaar: lijn, horizontale lijn, verticale lijn, kubieke Bezier-curve, kwadratische Bezier-curve, vloeiende kubieke Bezier-curve, vloeiende kwadratische Bezier-curve en elliptische boog.
U voert elke opdracht in met behulp van een hoofdletter of kleine letter: hoofdletters geven absolute waarden aan en kleine letters geven relatieve waarden aan: de besturingspunten voor dat segment zijn relatief ten opzichte van het eindpunt van het voorgaande voorbeeld.
Tip
Wanneer u meerdere opdrachten van hetzelfde type opeenvolgend invoert, kunt u de dubbele opdrachtinvoer weglaten; L 100,200 300,400
is bijvoorbeeld gelijk aan L 100,200 L 300,400
.
Commandoregel
Hiermee maakt u een rechte lijn tussen het huidige punt en het opgegeven eindpunt.
l 20 30
en L 20,30
zijn voorbeelden van geldige opdrachten.
Syntaxis |
---|
L
endPoint--of- l
endPoint |
Term | Beschrijving |
---|---|
endPoint- | System.Windows.Point Het eindpunt van de lijn. |
Een hoofdletter L
geeft aan dat endPoint
een absolute waarde is; een kleine letter l
geeft aan dat endPoint
een verschuiving is naar het vorige punt, of (0,0) als er geen bestaat.
Horizontale lijn commando
Hiermee maakt u een horizontale lijn tussen het huidige punt en de opgegeven x-coördinaat.
H 90
is een voorbeeld van een geldige horizontale regelopdracht.
Syntaxis |
---|
H
x-of- h
x |
Term | Beschrijving |
---|---|
x | System.Double De x-coördinaat van het eindpunt van de lijn. |
Een hoofdletter H
geeft aan dat x
een absolute waarde is; een kleine letter h
geeft aan dat x
een verschuiving is naar het vorige punt, of (0,0) als er geen bestaat.
Opdracht verticale regel
Hiermee maakt u een verticale lijn tussen het huidige punt en de opgegeven y-coördinaat.
v 90
is een voorbeeld van een geldige verticale regelopdracht.
Syntaxis |
---|
V
en- of - v
|
Term | Beschrijving |
---|---|
en | System.Double De y-coördinaat van het eindpunt van de lijn. |
Een hoofdletter V
geeft aan dat y
een absolute waarde is; een kleine letter v
geeft aan dat y
een verschuiving is naar het vorige punt, of (0,0) als er geen bestaat.
Opdracht kubieke Bézier-curve
Hiermee maakt u een kubieke Bezier-curve tussen het huidige punt en het opgegeven eindpunt met behulp van de twee opgegeven besturingspunten (controlPoint
1 en controlPoint
2).
C 100,200 200,400 300,200
is een voorbeeld van een geldige curveopdracht.
Syntaxis |
---|
C
controlPoint 1controlPoint 2endPoint -of- c
controlPoint 1controlPoint 2endPoint |
Term | Beschrijving |
---|---|
controlPoint 1 |
System.Windows.Point Het eerste besturingspunt van de curve, waarmee de begintangens van de curve worden bepaald. |
controlPoint 2 |
System.Windows.Point Het tweede besturingspunt van de curve, waarmee de eindtangens van de curve worden bepaald. |
endPoint |
System.Windows.Point Het punt waarop de curve wordt getekend. |
Kwadratische bezier-curveopdracht
Hiermee maakt u een kwadratische Bezier-curve tussen het huidige punt en het opgegeven eindpunt met behulp van het opgegeven besturingspunt (controlPoint
).
q 100,200 300,200
is een voorbeeld van een geldige kwadratische Bezier-curveopdracht.
Syntaxis |
---|
Q
controlPoint
endPoint
-of- q
controlPoint
endPoint
|
Term | Beschrijving |
---|---|
controlPoint |
System.Windows.Point Het besturingspunt van de curve, waarmee de begin- en eindtangens van de curve worden bepaald. |
endPoint |
System.Windows.Point Het punt waarop de curve wordt getekend. |
Commando voor vloeiende kubische Bezier-curve
Hiermee maakt u een kubieke Bezier-curve tussen het huidige punt en het opgegeven eindpunt. Het eerste besturingspunt wordt verondersteld de weerspiegeling te zijn van het tweede besturingspunt van de vorige opdracht ten opzichte van het huidige punt. Als er geen vorige opdracht is of als de vorige opdracht geen kubieke Bézier-curveopdracht of een vloeiende kubieke Bézier-curveopdracht is, neem dan aan dat het eerste controlepunt samenvalt met het huidige punt. Het tweede besturingspunt, het besturingspunt voor het einde van de curve, wordt opgegeven door controlPoint
2.
S 100,200 200,300
is bijvoorbeeld een geldige vloeiende kubieke Bezier-curveopdracht.
Syntaxis |
---|
S
controlPoint 2endPoint -of- s
controlPoint 2endPoint |
Termijn | Beschrijving |
---|---|
controlPoint 2 |
System.Windows.Point Het besturingspunt van de curve, waarmee de eindtangens van de curve worden bepaald. |
endPoint |
System.Windows.Point Het punt waarop de curve wordt getekend. |
Opdracht voor vloeiende kwadratische-Bezier-curve
Hiermee maakt u een kwadratische Bezier-curve tussen het huidige punt en het opgegeven eindpunt. Het besturingspunt wordt verondersteld de weerspiegeling te zijn van het besturingspunt van de vorige opdracht ten opzichte van het huidige punt. Als er geen vorige opdracht is of als de vorige opdracht geen kwadratische Bezier-curveopdracht of een vloeiende kwadratische Bezier-curveopdracht was, valt het besturingspunt samen met het huidige punt.
Syntaxis |
---|
T
endPoint
- of - t
endPoint
|
Term | Beschrijving |
---|---|
endPoint |
System.Windows.Point Het punt waarop de curve wordt getekend. |
Elliptische boogopdracht
Hiermee maakt u een elliptische boog tussen het huidige punt en het opgegeven eindpunt.
Syntaxis |
---|
A
size
rotationAngle
isLargeArcFlag
sweepDirectionFlag
endPoint
-of- a
size
rotationAngle
isLargeArcFlag
sweepDirectionFlag
endPoint
|
Term | Beschrijving |
---|---|
size |
System.Windows.Size De x- en y-radius van de boog. |
rotationAngle |
System.Double De draaiing van de ellips, in graden. |
isLargeArcFlag |
Ingesteld op 1 als de hoek van de boog 180 graden of hoger moet zijn; anders ingesteld op 0. |
sweepDirectionFlag |
Ingesteld op 1 als de boog in een positieve hoekrichting wordt getekend; anders ingesteld op 0. |
endPoint |
System.Windows.Point Het punt waarop de boog wordt getekend. |
De opdracht Sluiten
Hiermee wordt de huidige afbeelding beëindigd en wordt een lijn gemaakt waarmee het huidige punt wordt verbonden met het beginpunt van de afbeelding. Met deze opdracht maakt u een lijnverbinding (hoek) tussen het laatste segment en het eerste segment van de figuur.
Syntaxis |
---|
Z -of- z |
Puntsyntaxis
Beschrijft de x- en y-coördinaten van een punt waar (0,0) de linkerbovenhoek is.
Syntaxis |
---|
x
,
y
- of - x
y
|
Term | Beschrijving |
---|---|
x |
System.Double De x-coördinaat van het punt. |
y |
System.Double De y-coördinaat van het punt. |
Speciale waarden
In plaats van een standaard numerieke waarde kunt u ook de volgende speciale waarden gebruiken. Deze waarden zijn hoofdlettergevoelig.
Oneindigheid
Vertegenwoordigt Double.PositiveInfinity.
-Oneindigheid
Vertegenwoordigt Double.NegativeInfinity.
NaN
Vertegenwoordigt Double.NaN.
U kunt ook wetenschappelijke notatie gebruiken.
+1.e17
is bijvoorbeeld een geldige waarde.
Zie ook
.NET Desktop feedback