Sökvägsmarkeringssyntax
Sökvägar beskrivs i Shapes and Basic Drawing in WPF Overview and the Geometry Overview, men det här avsnittet beskriver i detalj det kraftfulla och komplexa minispråk som du kan använda för att ange sökvägsgeometrier mer kompakt med hjälp av XAML (Extensible Application Markup Language).
Förutsättningar
För att förstå det här avsnittet bör du känna till de grundläggande funktionerna i Geometry objekt. För mer information, se översikt över geometri.
StreamGeometry och PathFigureCollection Mini-Languages
WPF innehåller två klasser som tillhandahåller minispråk för att beskriva geometriska sökvägar: StreamGeometry och PathFigureCollection.
Du använder StreamGeometry minispråk när du anger en egenskap av typen Geometry, till exempel egenskapen Clip för en UIElement eller egenskapen Data för ett Path element. I följande exempel används attributsyntax för att skapa en StreamGeometry.
<Path Stroke="Black" Fill="Gray" Data="M 10,100 C 10,300 300,-200 300,100" />
Du använder PathFigureCollection minispråk när du anger egenskapen Figures för en PathGeometry. I följande exempel används en attributsyntax för att skapa en PathFigureCollection för en PathGeometry.
<Path Stroke="Black" Fill="Gray"> <Path.Data> <PathGeometry Figures="M 10,100 C 10,300 300,-200 300,100" /> </Path.Data> </Path>
Som du ser i föregående exempel är de två minispråken mycket lika. Det är alltid möjligt att använda en PathGeometry i alla situationer där du kan använda en StreamGeometry; så vilken ska du använda? Använd en StreamGeometry när du inte behöver ändra sökvägen när du har skapat den. använd en PathGeometry om du behöver ändra sökvägen.
Mer information om skillnaderna mellan PathGeometry- och StreamGeometry-objekt finns i geometriöversikt.
En anteckning om tomt utrymme
För korthet visas ett enda blanksteg i syntaxavsnitten som följer, men flera blanksteg är också acceptabla där ett enda blanksteg visas.
Två tal behöver faktiskt inte avgränsas med kommatecken eller blanksteg, men detta kan bara göras när den resulterande strängen är entydig. Till exempel är 2..3
faktiskt två tal: "2." och ".3". På samma sätt är 2-3
"2" och "-3". Mellanslag krävs inte heller före eller efter kommandon.
Syntax
XAML-attributanvändningssyntaxen (Extensible Application Markup Language) för en StreamGeometry består av ett valfritt FillRule-värde och en eller flera bildbeskrivningar.
StreamGeometry XAML-attributanvändning |
---|
<
objektegenskap=" [ fillRule ] figureDescription [ figureDescription ]* " ... /> |
XAML-attributanvändningssyntaxen (Extensible Application Markup Language) för en PathFigureCollection består av en eller flera bildbeskrivningar.
PathFigureCollection XAML-attributanvändning |
---|
<
objektegenskap=" figureDescription [ figureDescription ]* " ... /> |
Begrepp | Beskrivning |
---|---|
fillRegel | System.Windows.Media.FillRule Anger om StreamGeometry använder EvenOdd eller NonzeroFillRule. - F0 anger fyllningsregeln EvenOdd.- F1 anger Nonzero fyllningsregel.Om du utelämnar det här kommandot använder undersökvägen standardbeteendet EvenOdd. Om du anger det här kommandot måste du placera det först. |
figurbeskrivning | En figur som består av ett förflyttningskommando, rita-kommandon och ett valfritt stängningskommando.moveCommand
drawCommands
[
closeCommand
]
|
moveCommand | Ett flytta-kommando som anger bildens startpunkt. Se avsnittet Flyttkommando. |
drawCommands | Ett eller flera ritkommandon som beskriver figurens innehåll. Se avsnittet Ritkommandon. |
closeCommand | Ett valfritt stängningskommando som stänger figuren. Se avsnittet Stäng kommando. |
Flytta kommando
Anger startpunkten för en ny figur.
Syntax |
---|
M
startpunkt-eller- m
startPunkt |
Term | Beskrivning |
---|---|
startpunkt | System.Windows.Point Startpunkten för en ny figur. |
En versal M
anger att startPoint
är ett absolut värde. En gemen m
anger att startPoint
är en förskjutning från föregående punkt, eller (0,0) om ingen finns. Om du listar flera punkter efter flyttkommandot ritas en rad till dessa punkter trots att du har angett radkommandot.
Ritkommandon
Ett dragningskommando kan bestå av flera formkommandon. Följande formkommandon är tillgängliga: linje, vågrät linje, lodrät linje, kubisk Bezier-kurva, kvadratisk Bezier-kurva, jämn kubisk Bezier-kurva, jämn kvadratisk Bezier-kurva och elliptisk båge.
Du anger varje kommando med antingen versaler eller gemener: versaler anger absoluta värden och gemener som anger relativa värden: kontrollpunkterna för det segmentet är relativa till slutpunkten i föregående exempel.
Tips
När du sekventiellt anger mer än ett kommando av samma typ kan du utelämna den duplicerade kommandoposten. L 100,200 300,400
motsvarar till exempel L 100,200 L 300,400
.
Radkommando
Skapar en rät linje mellan den aktuella punkten och den angivna slutpunkten.
l 20 30
och L 20,30
är exempel på giltiga radkommandon.
Syntax |
---|
L
endPoint-eller- l
slutpunkt |
Term | Beskrivning |
---|---|
endPoint- | System.Windows.Point Radens slutpunkt. |
En versal L
anger att endPoint
är ett absolut värde; en gemen l
anger att endPoint
är en förskjutning till föregående punkt, eller (0,0) om ingen finns.
Kommando för vågrät linje
Skapar en vågrät linje mellan den aktuella punkten och den angivna x-koordinaten.
H 90
är ett exempel på ett giltigt vågrätt linjekommando.
Syntax |
---|
H
x-eller- h
x |
Term | Beskrivning |
---|---|
x | System.Double X-koordinaten för radens slutpunkt. |
En versal H
anger att x
är ett absolut värde; en gemen h
anger att x
är en förskjutning till föregående punkt, eller (0,0) om ingen finns.
Kommando för lodrät linje
Skapar en lodrät linje mellan den aktuella punkten och den angivna y-koordinaten.
v 90
är ett exempel på ett giltigt lodrätt linjekommando.
Syntax |
---|
V
y-eller- v
y |
Term | Beskrivning |
---|---|
y | System.Double Y-koordinaten för radens slutpunkt. |
En versal V
indikerar att y
är ett absolut värde; en gemen v
indikerar att y
är en förskjutning till föregående punkt, eller (0,0) om ingen finns.
Kubik Bezier Curve-kommando
Skapar en kubisk Bezier-kurva mellan den aktuella punkten och den angivna slutpunkten med hjälp av de två angivna kontrollpunkterna (controlPoint
1 och controlPoint
2).
C 100,200 200,400 300,200
är ett exempel på ett giltigt kurvkommando.
Syntax |
---|
C
controlPoint 1controlPoint 2endPoint -eller- c
controlPoint 1controlPoint 2endPoint |
Begrepp | Beskrivning |
---|---|
controlPoint 1 |
System.Windows.Point Den första kontrollpunkten i kurvan, som bestämmer kurvans start tangens. |
controlPoint 2 |
System.Windows.Point Kurvans andra kontrollpunkt, som bestämmer kurvans slut tangens. |
endPoint |
System.Windows.Point Den punkt som kurvan ritas till. |
Kvadratisk Bézierkurvkommando
Skapar en kvadratisk Bezier-kurva mellan den aktuella punkten och den angivna slutpunkten med hjälp av den angivna kontrollpunkten (controlPoint
).
q 100,200 300,200
är ett exempel på ett giltigt kvadratiskt Bezier-kurvkommando.
Syntax |
---|
Q
controlPoint
endPoint
-eller- q
controlPoint
endPoint
|
Termin | Beskrivning |
---|---|
controlPoint |
System.Windows.Point Kurvans kontrollpunkt, som bestämmer kurvans start- och slut tangenser. |
endPoint |
System.Windows.Point Den punkt som kurvan ritas till. |
Kommandot jämn kubisk Bézier-kurva
Skapar en kubisk Bezier-kurva mellan den aktuella punkten och den angivna slutpunkten. Den första kontrollpunkten antas vara återspeglingen av den andra kontrollpunkten i föregående kommando i förhållande till den aktuella punkten. Om det inte finns något tidigare kommando eller om det tidigare kommandot inte var ett kubiskt Bezierkurvakommando eller ett mjukt kubiskt Bezierkurvakommando, antar man att den första kontrollpunkten överensstämmer med den aktuella punkten. Den andra kontrollpunkten, kontrollpunkten för slutet av kurvan, anges av controlPoint
2. Till exempel är S 100,200 200,300
ett giltigt kommando för en jämn kubisk Bezier-kurva.
Syntax |
---|
S
controlPoint 2endPoint -eller- s
controlPoint 2endPoint |
Termin | Beskrivning |
---|---|
controlPoint 2 |
System.Windows.Point Kurvans kontrollpunkt, som avgör kurvans slut tangens. |
endPoint |
System.Windows.Point Den punkt som kurvan ritas till. |
Kommandot för jämn kvadratisk Bèzierkurva
Skapar en kvadratisk Bezier-kurva mellan den aktuella punkten och den angivna slutpunkten. Kontrollpunkten antas vara en återspegling av kontrollpunkten för föregående kommando i förhållande till den aktuella punkten. Om det inte finns något tidigare kommando eller om föregående kommando inte var ett kvadratisk Bezier-kurvkommando eller ett smidigt kvadratisk Bezier-kurvkommando, sammanfaller kontrollpunkten med den aktuella punkten.
Syntax |
---|
T
endPoint
-eller- t
endPoint
|
Term | Beskrivning |
---|---|
endPoint |
System.Windows.Point Den punkt som kurvan ritas till. |
Elliptisk bågekommando
Skapar en elliptisk båge mellan den aktuella punkten och den angivna slutpunkten.
Syntax |
---|
A
size
rotationAngle
isLargeArcFlag
sweepDirectionFlag
endPoint
-eller- a
size
rotationAngle
isLargeArcFlag
sweepDirectionFlag
endPoint
|
Term | Beskrivning |
---|---|
size |
System.Windows.Size Bågens x- och y-radie. |
rotationAngle |
System.Double Rotationen av ellipsen, i grader. |
isLargeArcFlag |
Ange till 1 om bågens vinkel ska vara 180 grader eller högre. annars anger du till 0. |
sweepDirectionFlag |
Sätt till 1 om bågen ritas i positiv vinkelriktning; annars sätt till 0. |
endPoint |
System.Windows.Point Den punkt till vilken bågen ritas. |
Kommandot Stänga
Avslutar den aktuella figuren och skapar en linje som ansluter den aktuella punkten till bildens startpunkt. Det här kommandot skapar en radkoppling (hörn) mellan det sista segmentet och det första segmentet i figuren.
Syntax |
---|
Z -eller- z |
Punktsyntax
Beskriver x- och y-koordinaterna för en punkt där (0,0) är det övre vänstra hörnet.
Syntax |
---|
x
,
y
-eller- x
y
|
Villkor | Beskrivning |
---|---|
x |
System.Double Punktens x-koordinat. |
y |
System.Double Punktens y-koordinat. |
Specialvärden
I stället för ett numeriskt standardvärde kan du också använda följande specialvärden. Dessa värden är skiftlägeskänsliga.
Oändlighet
Representerar Double.PositiveInfinity.
-Oändlighet
Representerar Double.NegativeInfinity.
NaN
Representerar Double.NaN.
Du kan också använda vetenskaplig notation. Till exempel är +1.e17
ett giltigt värde.
Se även
.NET Desktop feedback