Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Lär dig mer om kommandon för att flytta och rita (ett minispråk) som du kan använda för att ange sökvägsgeometrier som ett XAML-attributvärde. Kommandon för att flytta och rita används av många design- och grafikverktyg som kan generera en vektorgrafik eller en form i form av ett serialiserings- och utbytesformat.
Egenskaper som använder flytt- och ritkommandosträngar
Flytta och rita-kommandosyntaxen stöds av en intern typkonverterare för XAML, som parsar kommandona och skapar en grafisk representation under körning. Den här representationen är i princip en färdig uppsättning vektorer som är redo för presentation. Själva vektorerna slutför inte presentationsinformationen. Du måste fortfarande ange andra värden för elementen. För ett Path-objekt behöver du också värden för Fyllning, Linje och andra egenskaper, och sedan måste sökvägen vara ansluten till det visuella trädet på något sätt. Ange egenskapen Foreground för ett PathIcon-objekt.
Det finns två egenskaper i Windows Runtime som kan använda en sträng som representerar flytta och rita kommandon: Path.Data och PathIcon.Data. Om du anger någon av dessa egenskaper genom att ange flytta och rita kommandon anger du vanligtvis det som ett XAML-attributvärde tillsammans med andra obligatoriska attribut för det elementet. Utan att gå in på detaljerna ser det ut så här:
<Path x:Name="Arrow" Fill="White" Height="11" Width="9.67"
Data="M4.12,0 L9.67,5.47 L4.12,10.94 L0,10.88 L5.56,5.47 L0,0.06" />
Att använda flytta och rita-kommandon jämfört med att använda en PathGeometry
För Windows Runtime XAML skapar ett kommando som flyttar och ritar en PathGeometry med ett enda PathFigure-objekt med egenskapen Figures. Varje ritkommando skapar en PathSegment-härledd klass i PathFigures Segment-samling, flyttkommandot ändrar StartPoint, och ett stängningskommando sätter IsClosed till true. Du kan navigera i den här strukturen som en objektmodell om du undersöker datavärdena under körning.
Grundläggande syntax
Syntaxen för kommandon för att flytta och rita kan sammanfattas så här:
- Börja med en valfri fyllningsregel. Vanligtvis anger du endast detta om du inte vill ha standardvärdet EvenOdd . (Mer om EvenOdd senare.)
- Ange exakt ett flytta-kommando.
- Ange ett eller flera dragningskommandon.
- Ange ett stäng-kommando. Du kan utelämna ett stängningskommando, men då skulle figuren förbli öppen (det är ovanligt).
Allmänna regler för den här syntaxen är:
- Varje kommando representeras av exakt en bokstav.
- Den bokstaven kan vara versaler eller gemener. Ärende är viktigt, som vi ska beskriva.
- Varje kommando utom kommandot close följs vanligtvis av ett eller flera tal.
- Om det finns fler än ett nummer för ett kommando, separera dem med kommatecken eller blanksteg.
[fillRule]moveCommanddrawCommand[drawCommand*][closeCommand]
Många av dragningskommandona använder punkter, där du anger ett x,y-värde . När du ser platshållaren *points kan du anta att du ger två decimalvärden för x,y-värdet för en punkt.
Tomrum kan ofta utelämnas när resultatet inte är tvetydigt. Du kan faktiskt utelämna allt tomt utrymme om du använder kommatecken som avgränsare för alla nummeruppsättningar (punkter och storlek). Den här användningen är till exempel laglig: F1M0,58L2,56L6,60L13,51L15,53L6,64z. Men det är mer typiskt att inkludera tomt utrymme mellan kommandon för tydlighetens skull.
Använd inte kommatecken som decimaltecken för decimaltal. kommandosträngen tolkas av XAML och tar inte hänsyn till kulturspecifika talformateringskonventioner som skiljer sig från de som används i en-us nationella inställningar.
Syntaxens specifika detaljer
Fyllningsregel
Det finns två möjliga värden för den valfria fyllningsregeln: F0 eller F1. (F är alltid versaler.) F0 är standardvärdet; det genererar EvenOdd-fyllningsbeteende, så du behöver vanligtvis inte ange det. Använd F1 för att få Nonzero-fyllningsbeteende. Dessa fyllningsvärden överensstämmer med värdena för FillRule-uppräkningen .
Flytta kommando
Placerar startpunkten för en ny figur.
| Syntax |
|---|
M
startPoint -eller- m
startPoint |
| Begrepp | Description |
|---|---|
| startPoint |
Punkt Startpunkten för en ny figur. |
Ett versalt M anger att startPoint är en absolut koordinat. Ett gement m anger att startPoint är en förskjutning till föregående punkt, eller (0,0) om det inte fanns någon föregående punkt.
Notera Det är lagligt att ange flera punkter efter flyttkommandot. En rad ritas till dessa punkter som om du angav radkommandot. Men det är inte ett rekommenderat format; använd i stället det dedikerade linjekommandot.
Ritkommandon
Ett rita-kommando kan bestå av flera formkommandon: linje, vågrät linje, lodrät linje, kubisk Bezier-kurva, kvadratisk Bezier-kurva, jämn kubisk Bezier-kurva, slät kvadratisk Bezier-kurva och elliptisk båge.
För alla dragningskommandon är skiftläge viktigt. Versaler anger absoluta koordinater och gemener anger koordinater i förhållande till föregående kommando.
Kontrollpunkterna för ett segment är relativa till slutpunkten för föregående segment. När du sekventiellt anger mer än ett kommando av samma typ kan du utelämna den duplicerade kommandoposten. Till exempel L 100,200 300,400 motsvarar 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. Definierar motsvarigheten till ett LineGeometry-objekt .
| Syntax |
|---|
L
Slutpunkt -eller- l
Slutpunkt |
| Begrepp | Description |
|---|---|
| Slutpunkt |
Punkt Linjens slutpunkt. |
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 |
| Begrepp | Description |
|---|---|
| x |
Dubbel X-koordinaten för radens slutpunkt. |
Vertikal linjekommando
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 |
| Begrepp | Description |
|---|---|
| y |
Dubbel Y-koordinaten för radens slutpunkt. |
Kubik-Bézier-kurvkommando
Skapar en kubisk Bézier-kurva mellan den aktuella punkten och den angivna slutpunkten med hjälp av de två angivna kontrollpunkterna (controlPoint1 och controlPoint2).
C 100,200 200,400 300,200 är ett exempel på ett giltigt kurvkommando. Definierar motsvarigheten till ett PathGeometry-objekt med ett BezierSegment-objekt .
| Syntax |
|---|
C
controlPoint1kontrollpunkt2slutpunkt -eller- c
controlPoint1controlPoint2slutpunkt |
| Begrepp | Description |
|---|---|
| controlPoint1 |
Punkt Den första kontrollpunkten i kurvan, som bestämmer kurvans start tangens. |
| controlPoint2 |
Punkt Kurvans andra kontrollpunkt, som bestämmer kurvans slut tangens. |
| Slutpunkt |
Punkt Den punkt som kurvan ritas till. |
Kommandot Quadratic Bézier curve
Skapar en kvadratisk Bézier-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 Bézier-kurvkommando. Definierar motsvarigheten till en PathGeometry med quadraticBezierSegment.
| Syntax |
|---|
Q
controlPoint-slutpunkt -eller- q
controlPoint-slutpunkt |
| Begrepp | Description |
|---|---|
| controlPoint |
Punkt Kurvans kontrollpunkt, som bestämmer kurvans start- och slut tangenser. |
| Slutpunkt |
Punkt Den punkt som kurvan ritas till. |
Kommandot Smooth cubic Bézier curve
Skapar en kubisk Bézier-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 föregående kommando inte var ett kubisk Bézier-kurvkommando eller ett kommando för jämn kubisk Bézier-kurva, antar man att den första kontrollpunkten sammanfaller med den aktuella punkten. Den andra kontrollpunkten– kontrollpunkten för slutet av kurvan – anges av controlPoint2. Till exempel är S 100,200 200,300 ett giltigt kommando för en smooth cubic Bézier-kurva. Det här kommandot definierar motsvarigheten till en PathGeometry med ett BezierSegment där det fanns föregående kurvsegment.
| Syntax |
|---|
S
kontrollpunkt2slutpunkt -eller- s
controlPoint2-slutpunkt |
| Begrepp | Description |
|---|---|
| controlPoint2 |
Punkt Kurvans kontrollpunkt, som avgör kurvans slut tangens. |
| Slutpunkt |
Punkt Den punkt som kurvan ritas till. |
Utjämnad kvadratisk Bézier-kurvkommando
Skapar en kvadratisk Bézier-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 kvadratiskt Bézier-kurvkommando eller ett smidigt kvadratiskt Bézier-kurvkommando, är kontrollpunkten sammanfallen med den aktuella punkten. Det här kommandot definierar motsvarigheten till en PathGeometry med ett QuadraticBezierSegment där det fanns föregående kurvsegment.
| Syntax |
|---|
T
kontrollpunktslutpunkt -eller- t
kontrollpunktslutpunkt |
| Begrepp | Description |
|---|---|
| controlPoint |
Punkt Kurvans kontrollpunkt, som bestämmer kurvans startpunkt och tangens. |
| Slutpunkt |
Punkt Den punkt som kurvan ritas till. |
Elliptisk bågkommando
Skapar en elliptisk båge mellan den aktuella punkten och den angivna slutpunkten. Definierar motsvarigheten till en PathGeometry med ett ArcSegment.
| Syntax |
|---|
A
storlekrotationsvinkelisLargeArcFlagsweepDirectionFlagendPoint -eller- a
storlekrotationAngleisLargeArcFlagsweepDirectionFlagendPoint |
| Begrepp | Description |
|---|---|
| storlek |
Storlek X-radius och y-radius för bågen. |
| rotationAngle |
Dubbel 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 | Ange till 1 om bågen ritas i positiv vinkelriktning; annars ange till 0. |
| Slutpunkt |
Punkt Den punkt till vilken bågen ritas. |
Stäng kommando
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-koordinaten och y-koordinaten för en punkt. Se även Punkt.
| Syntax |
|---|
|
x,y -eller- xy |
| Begrepp | Description |
|---|---|
| x |
Dubbel Punktens x-koordinat. |
| y |
Dubbel Punktens y-koordinat. |
Ytterligare anteckningar
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 PositiveInfinity.
- -Infinity: Representerar NegativeInfinity.
- NaN: Representerar NaN.
I stället för att använda decimaler eller heltal kan du använda vetenskaplig notation. Är till exempel +1.e17 ett giltigt värde.
Designverktyg som skapar kommandon för att flytta och rita
Om du använder pennverktyget och andra ritverktyg i Blend för Microsoft Visual Studio 2015 skapas vanligtvis ett Path-objekt med kommandon för att flytta och rita.
Du kanske ser befintliga flytt- och ritkommandodata i några av de kontrolldelar som definierats i Windows Runtime XAML-standardmallar för kontrollerna. Vissa kontroller använder till exempel en PathIcon som har de data som definierats som kommandon för att flytta och rita.
Det finns exportörer eller plugin-program tillgängliga för andra vanliga designverktyg för vektorgrafik som kan mata ut vektorn i XAML-form. Dessa skapar vanligtvis Sökvägsobjekt i en layoutcontainer med kommandon för att flytta och rita för Path.Data. Det kan finnas flera Path-element i XAML så att olika penslar kan användas. Många av dessa exportörer eller plugin-program skrevs ursprungligen för Windows Presentation Foundation (WPF) XAML eller Silverlight, men XAML-sökvägssyntaxen är identisk med Windows Runtime XAML. Vanligtvis kan du använda segment av XAML från en exportör och klistra in dem direkt på en Windows Runtime XAML-sida. (Du kommer dock inte att kunna använda en RadialGradientBrush, om det var en del av den konverterade XAML eftersom Windows Runtime XAML inte stöder den penseln.)
Relaterade ämnen
Windows developer