Udostępnij za pomocą


Składnia poleceń przenoszenia i rysowania

Dowiedz się więcej o poleceniach przenoszenia i rysowania (minijęzycznych), których można użyć do określenia geometrii ścieżek jako wartości atrybutu XAML. Polecenia przenoszenia i rysowania są używane przez wiele narzędzi projektowych i graficznych, które mogą wyprowadzać grafikę wektorową lub kształt, pełniąc rolę formatu do serializacji i wymiany.

Właściwości używające ciągów poleceń przesunięcia i rysowania

Składnia poleceń przenoszenia i rysowania jest obsługiwana przez wewnętrzny konwerter typów dla języka XAML, który analizuje polecenia i tworzy reprezentację grafiki w czasie wykonywania. Ta reprezentacja jest w zasadzie gotowym zestawem wektorów gotowych do prezentacji. Same wektory nie wypełniają szczegółów prezentacji; Nadal trzeba będzie ustawić inne wartości na elementach. W przypadku obiektu Path potrzebne są również wartości Fill, Stroke i inne właściwości, a następnie ścieżka musi być w jakiś sposób połączona z drzewem wizualnym. Dla obiektu PathIcon ustaw właściwość Foreground .

W środowisku uruchomieniowym systemu Windows istnieją dwie właściwości, które mogą używać ciągu reprezentującego polecenia przenoszenia i rysowania: Path.Data i PathIcon.Data. Jeśli ustawisz jedną z tych właściwości, określając polecenia przenoszenia i rysowania, zazwyczaj ustawiasz ją jako wartość atrybutu XAML wraz z innymi wymaganymi atrybutami tego elementu. Bez zagłębiania się w szczegóły poniżej przedstawiono następujące elementy:

<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" />

Używanie poleceń przenoszenia i rysowania w porównaniu z użyciem PathGeometry

W języku XAML środowiska uruchomieniowego systemu Windows polecenia przenoszenia i rysowania generują PathGeometry z pojedynczym obiektem PathFigure, który ma wartość właściwości Figures. Każde polecenie draw tworzy klasę pochodną PathSegment w kolekcji Segmenty pojedynczego obiektu PathFigure, polecenie przenoszenia zmienia StartPoint, a istnienie polecenia zamknięcia ustawia IsClosed na true. Możesz nawigować po tej strukturze jako modelu obiektowym, jeśli podczas wykonywania przeanalizujesz wartości danych.

Podstawowa składnia

Składnia poleceń przenoszenia i rysowania można podsumować w następujący sposób:

  1. Zacznij od opcjonalnej reguły wypełnienia. Zazwyczaj określa się to tylko wtedy, gdy nie chcesz domyślnego elementu EvenOdd . (Więcej informacji o EvenOdd później).
  2. Określ dokładnie jedno polecenie przenoszenia.
  3. Określ co najmniej jedno polecenie rysowania.
  4. Określ polecenie zamknięcia. Możesz pominąć polecenie zamknięcia, ale spowoduje to pozostawienie figury otwartej (co jest rzadkością).

Ogólne reguły tej składni to:

  • Każde polecenie jest reprezentowane przez dokładnie jedną literę.
  • Ta litera może być zapisana wielką lub małą literą. Sprawa ma znaczenie, jak opiszemy.
  • Każde polecenie, za wyjątkiem polecenia zamknięcia, jest zwykle poprzedzone jedną lub większą ilością liczb.
  • Jeśli więcej niż jedna liczba dla polecenia, oddziel przecinkiem lub spacją.

[fillRule]moveCommanddrawCommand[drawCommand*][closeCommand]

Wiele poleceń rysowania używa punktów, w których podaje się wartość x,y . Za każdym razem, gdy zobaczysz symbol zastępczy *punkty, możesz przyjąć, że podajesz dwie wartości dziesiętne dla wartości x,y punktu.

Białe znaki mogą być często pomijane, gdy wynik nie jest niejednoznaczny. W rzeczywistości można pominąć wszystkie białe znaki, jeśli używasz przecinków jako separatora dla wszystkich zestawów liczb (punktów i rozmiaru). Na przykład to użycie jest legalne: F1M0,58L2,56L6,60L13,51L15,53L6,64z. Jednak bardziej typowe jest uwzględnienie białych znaków między poleceniami w celu uzyskania jasności.

Nie używaj przecinków jako punktu dziesiętnego dla liczb dziesiętnych; ciąg polecenia jest interpretowany przez język XAML i nie uwzględnia konwencji formatowania liczb specyficznych dla kultury, które różnią się od tych używanych w ustawieniach regionalnych en-us .

Specyfika składni

Reguła wypełniania

Istnieją dwie możliwe wartości dla opcjonalnej reguły wypełnienia: F0 lub F1. (Litera F jest zawsze wielką literą). F0 jest wartością domyślną; generuje zachowanie wypełnienia EvenOdd , więc zwykle nie określa się go. Użyj F1 , aby uzyskać zachowanie wypełnienia Nonzero . Te wartości wypełnienia są zgodne z wartościami wyliczenia FillRule .

Polecenie Przenieś

Określa punkt początkowy nowego rysunku.

Składnia
M startPoint
- lub -
m startPoint
Termin Description
startPoint Punkt
Punkt początkowy nowego rysunku.

Wielka litera M wskazuje, że startPoint jest współrzędną bezwzględną; mała litera m wskazuje, że startPoint jest przesunięciem do poprzedniego punktu lub (0,0), jeśli nie było poprzedniego punktu.

Uwaga Legalne jest określenie wielu punktów po poleceniu przesunięcia. Linia jest narysowana do tych punktów, jakby użyto polecenia linii. Nie jest to jednak zalecany styl; zamiast tego użyj dedykowanego polecenia wiersza poleceń.

Rysuj polecenia

Polecenie draw może składać się z kilku poleceń kształtu: linii, linii poziomej, linii pionowej, krzywej Beziera sześciennego, krzywej Beziera kwadratowej, gładkiej krzywej Beziera sześciennego, gładkiej krzywej Beziera kwadratowej i łuku eliptycznego.

W przypadku wszystkich poleceń rysowania wielkość liter ma znaczenie. Wielkie litery oznaczają współrzędne bezwzględne i małe litery oznaczają współrzędne względem poprzedniego polecenia.

Punkty kontrolne dla segmentu są względne względem punktu końcowego poprzedniego segmentu. Podczas sekwencyjnie wprowadzania więcej niż jednego polecenia tego samego typu można pominąć zduplikowany wpis polecenia. Na przykład L 100,200 300,400 jest odpowiednikiem L 100,200 L 300,400.

Polecenie liniowe

Tworzy linię prostą między bieżącym punktem a określonym punktem końcowym. l 20 30 i L 20,30 stanowią przykłady prawidłowych poleceń wiersza. Definiuje odpowiednik obiektu LineGeometry .

Składnia
L punkt końcowy
- lub -
l punkt końcowy
Termin Description
punkt końcowy Punkt
Punkt końcowy linii.

Polecenie linii poziomej

Tworzy linię poziomą między bieżącym punktem a określoną współrzędną x. H 90 to przykład prawidłowego polecenia wiersza poziomego.

Składnia
H x
- lub -
h x
Termin Description
x Podwójny
Współrzędna x punktu końcowego linii.

Polecenie Linii Pionowej

Tworzy linię pionową między bieżącym punktem a określoną współrzędną y. v 90 to przykład prawidłowego polecenia wiersza pionowego.

Składnia
V y
- lub -
v y
Termin Description
y Podwójny
Współrzędna y punktu końcowego linii.

Polecenie krzywej sześciennej Bézier

Tworzy krzywą Sześciennika Béziera między bieżącym punktem a określonym punktem końcowym przy użyciu dwóch określonych punktów kontrolnych (controlPoint1 i controlPoint2). C 100,200 200,400 300,200 to przykład prawidłowej komendy krzywej. Definiuje odpowiednik obiektu PathGeometry z obiektem BezierSegment .

Składnia
C controlPoint1controlPoint2endPoint
- lub -
c controlPoint1controlPoint2endPoint
Termin Description
controlPoint1 Punkt
Pierwszy punkt kontrolny krzywej, który określa tangens początkowy krzywej.
controlPoint2 Punkt
Drugi punkt kontrolny krzywej, który określa koniec tangensu krzywej.
punkt końcowy Punkt
Punkt, do którego jest rysowana krzywa.

Polecenie dla krzywej Béziera kwadratowej

Tworzy krzywą Béziera kwadratową między bieżącym punktem a określonym punktem końcowym przy użyciu określonego punktu kontrolnego (controlPoint). q 100,200 300,200 to przykład prawidłowego polecenia kwadratowej krzywej Béziera. Definiuje odpowiednik elementu PathGeometry z elementem QuadraticBezierSegment.

Składnia
Q controlPoint endPoint
- lub -
q controlPoint endPoint
Termin Description
controlPoint Punkt
Punkt kontrolny krzywej, który określa tangens początkowy i końcowy krzywej.
punkt końcowy Punkt
Punkt, do którego rysuje się krzywa.

Gładka sześcienna krzywa Béziera, polecenie

Tworzy krzywą Béziera sześcienną między bieżącym punktem a określonym punktem końcowym. Przyjmuje się, że pierwszy punkt kontrolny jest odzwierciedleniem drugiego punktu kontrolnego poprzedniego polecenia względem bieżącego punktu. Jeśli nie ma poprzedniego polecenia lub jeśli poprzednie polecenie nie było sześciennym poleceniem krzywej Béziera lub gładkim sześciennym poleceniem krzywej Béziera, załóżmy, że pierwszy punkt kontrolny pokrywa się z bieżącym punktem. Drugi punkt kontrolny — punkt kontrolny końca krzywej — jest określany przez controlPoint2. Na przykład S 100,200 200,300 jest prawidłowym poleceniem gładkiej sześciennej krzywej Béziera. To polecenie definiuje odpowiednik obiektu PathGeometry z obiektem BezierSegment, w miejscu, gdzie znajdował się poprzedni segment krzywej.

Składnia
S controlPoint2endPoint
- lub -
s controlPoint2 endPoint
Termin Description
controlPoint2 Punkt
Punkt kontrolny krzywej, który określa koniec tangensa krzywej.
punkt końcowy Punkt
Punkt, do którego rysuje się krzywa.

Smooth quadratic Bézier curve polecenie

Tworzy krzywą kwadratową Béziera między bieżącym punktem a określonym punktem końcowym. Przyjmuje się, że punkt kontrolny jest odbiciem punktu kontrolnego poprzedniego polecenia względem bieżącego punktu. Jeśli nie ma poprzedniego polecenia lub jeśli poprzednie polecenie nie było poleceniem kwadratowej krzywej Béziera lub gładkiej kwadratowej krzywej Béziera, punkt kontrolny jest zbieżny z bieżącym punktem. To polecenie definiuje odpowiednik elementu PathGeometry z elementem QuadraticBezierSegment , w którym znajdował się poprzedni segment krzywej.

Składnia
T controlPointendPoint
- lub -
t controlPointendPoint
Termin Description
controlPoint Punkt
Punkt kontrolny krzywej, który określa początek i tangens krzywej.
punkt końcowy Punkt
Punkt, do którego jest rysowana krzywa.

Polecenie łuku eliptycznego

Tworzy łuk eliptyczny między bieżącym punktem a określonym punktem końcowym. Definiuje odpowiednik pathGeometry z elementem ArcSegment.

Składnia
A sizerotationAngleisLargeArcFlagsweepDirectionFlagendPoint
- lub -
a sizerotationAngleisLargeArcFlagsweepDirectionFlagendPoint
Termin Description
rozmiar Rozmiar
Promień x i promień łuku.
rotationAngle Podwójny
Obrót elipsy w stopniach.
isLargeArcFlag Ustaw wartość 1, jeśli kąt łuku powinien mieć wartość 180 stopni lub większą; w przeciwnym razie ustaw wartość 0.
sweepDirectionFlag Ustaw wartość 1, jeśli łuk jest rysowany w kierunku dodatnim; w przeciwnym razie ustaw wartość 0.
punkt końcowy Punkt
Punkt, do którego jest rysowany łuk.

Zamknij polecenie

Kończy bieżący rysunek i tworzy linię łączącą bieżący punkt z punktem początkowym rysunku. To polecenie tworzy złącze liniowe (załamanie) między ostatnim odcinkiem a pierwszym odcinkiem rysunku.

Składnia
Z
-lub-
z

Składnia punktu

Opisuje współrzędną x i współrzędną y punktu. Zobacz też Punkt.

Składnia
x,y
- lub -
xy
Termin Description
x Podwójny
Współrzędna x punktu.
y Podwójny
Współrzędna y punktu.

Dodatkowe uwagi

Zamiast standardowej wartości liczbowej można również użyć następujących wartości specjalnych. Te wartości są rozróżniane pod względem wielkości liter.

  • Nieskończoność: reprezentuje PositiveInfinity.
  • -Infinity: reprezentuje ujemną nieskończoność.
  • NaN: reprezentuje NaN.

Zamiast używać liczb dziesiętnych lub liczb całkowitych, można użyć notacji naukowej. Na przykład +1.e17 jest prawidłową wartością.

Narzędzia do projektowania, które tworzą polecenia przenoszenia i rysowania

Użycie narzędzia Pióro oraz innych narzędzi do rysowania w Blend dla Microsoft Visual Studio 2015 zazwyczaj tworzy obiekt Path z poleceniami przenoszenia i rysowania.

W niektórych częściach kontrolek zdefiniowanych w domyślnych szablonach XAML środowiska Windows Runtime dla kontrolek możesz zobaczyć istniejące dane polecenia przenoszenia i rysowania. Na przykład niektóre kontrolki używają interfejsu PathIcon , który zawiera dane zdefiniowane jako polecenia przenoszenia i rysowania.

Istnieją eksporterzy lub wtyczki dostępne dla innych powszechnie używanych narzędzi projektowania wektorów graficznych, które mogą wyprowadzać wektor w postaci XAML. Zazwyczaj tworzą obiekty Path w kontenerze układu, używając poleceń ruchu i rysowania dla danych Path.Data. W języku XAML może istnieć wiele elementów ścieżki , dzięki czemu można zastosować różne pędzle. Wielu z tych eksporterów lub wtyczek zostało pierwotnie napisanych dla XAML środowiska Windows Presentation Foundation (WPF) lub Silverlight, ale składnia ścieżki XAML w Windows Runtime jest identyczna. Zazwyczaj możesz użyć fragmentów XAML z eksportera i wkleić je bezpośrednio do strony XAML środowiska uruchomieniowego systemu Windows. (Jednak nie będzie można użyć radialGradientBrush, jeśli był to część przekonwertowanego kodu XAML, ponieważ środowisko uruchomieniowe systemu Windows XAML nie obsługuje tego pędzla).