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.
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-flag
– true
– 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.
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();
Warto pamiętać
Jak pamiętamy w JavaFX mamy kształt Path
, do którego możemy dodawać segmenty (kształty) klasy PathElement
– MoveTo
, 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.