JavaFX z Arią - powrót do strony głównej

JavaFX: Metoda appendSVGPath

Metoda void appendSVGPath(String svgpath)

svgpath – ścieżka SVG

Metoda dodaje string ze ścieżką SVG do bieżącej ścieżki. Jeśli nie ma jeszcze nic na bieżącej ścieżce
string musi zaczynać sie od polecenia moveto. String null jest ignorowany.

Na metodę appendSVGPath mają wpływ jedynie atrybuty ogólne, z tym że transformacja ma wpływ jedynie przy
tworzeniu ścieżki.

Polecenia ścieżki SVG
Pełna nazwa SVG Polecenie Parametry
moveto M (x, y)
lineto L (x, y)
horizontal lineto H (x)
vertical lineto V (y)
eliptical arcto A (rx, ry, x-axis-rotation, large-arc-flag, sweep-flag, x, y)
quadratic Bezier curveto Q (cx, cy, x, y)
smooth quadratic Bezier curveto T (x, y)
curveto C (c1x, c1y, c2x, c2y, x, y)
smooth curveto S (c2x, c2y, x, y)
closepath Z

Parametry dla wszystkich powyższych poleceń, pisanych z dużej litery, są wartościami bezwzględnymi.

Parametry dla tych samych poleceń pisanych z małej litery, są wartościami względnymi, dodawanymi (lub odejmowanymi) od wartości bieżącej. Więcej na temat poleceń oraz wartości względnych.

Znaczenie parametrów w tabeli

x – współrzędna pozioma punktu

y – współrzędna pionowa punktu

cx – współrzędna pozioma punktu kontrolnego

cy – współrzędna pionowa punktu kontrolnego

Współrzędne dla polecenia arcto

rx – promień poziomy łuku (elipsy)

ry – promień pionowy łuku (elipsy)

x-axis-rotation – kąt w stopniach pomiędzy osią X, a pozioma osią elipsy

large-arc-flagtrue – jeśli łuk jest większy od 180°, domyślnie false
łuk równy lub mniejszy od 180°

sweep-flag true dla kąta ‘górnego’ w kierunku przeciwnym do ruchu wskazówek zegara, domyślnie false – kąt ‘dolny’ w kierunku ruchu wskazówek zegara.

x – współrzędna pozioma końca łuku

y – współrzędna pionowa końca łuku

Zależność między large-arc-flag oraz sweep-flag wyjaśnia Rys. 25_36.

Objasnienie do tekstu
Rys. 25_36 (z domeny publicznej)
Klasa Listing25_38

Ściągnij klasę Listing25_38

   GraphicsContext gc = cv.getGraphicsContext2D();
   gc.setStroke(Color.BLACK);
   gc.setFill(Color.AQUAMARINE);
   gc.setFillRule(FillRule.EVEN_ODD);
   //-
   gc.beginPath();
   gc.appendSVGPath("M0,200 Q200,400,400,200
      Q200,0,0,200 M100,250 L100,150 L300,250 L300,150 Z");
   gc.stroke();
   gc.fill();
Zasada fill rule
Rys. 25-37. Zasada fill rule

Warto pamiętać

Jak pamiętamy w JavaFX mamy kształt Path, do którego możemy dodawać segmenty (kształty) klasy PathElementMoveTo, LineTo, HLineTo, VLineTo, ArcTo, QuadCurveTo, CubicCurveTo, ClosePath.

W JavaFX istnieje też kształt SVGPath, który pozwala tworzyć ścieżkę przez dodawanie segmentów ścieżki SVG zapisywanych jako string. Segmenty te są dokładnie takimi samymi kształtami jak powyżej wymienione.