JavaFX canvas: Metody arcTo
Metoda void arcTo(double x1, double y1, double x2, double y2, double radius)
x1 – współrzędna pozioma pierwszego punktu łuku
y1 – współrzędna pionowa pierwszego punktu łuku
x2 – współrzędna pozioma drugiego punktu łuku
y2 – współrzędna pionowa drugiego punktu łuku
radiuspromień łuku w przedziale (0.0, ∞)
Dodaje segmenty do bieżącej ścieżki tworząc łuk.
Na metodę arcTo maja wpływ jedynie atrybuty ogólne, z tym że transformacja ma wpływ jedynie przy tworzeniu ścieżki.
Jeśli p0 jest bieżącym punktem ścieżki, a p1 jest punktem określonym przez (x1, y1), a p2 jest punktem określonym przez (x2, y2), to dołączone segmenty łuku będą segmentami na obwodzie koła o promieniu radius stykającego się i wpisanego w wypukłą (wewnętrzną) stronę p0-> p1-> p2.
Ścieżka będzie zawierała odcinek linii (jeśli to konieczne) do punktu stycznego między tym okręgiem a p0-> p1, po którym nastąpią okrągłe segmenty łuku, aż do osiągnięcia punkt stycznego między okręgiem a p1-> p2 i zakończy w bieżącym punkcie w punkcie stycznym (nie w p2). Zwróć uwagę, że promień i kolistość segmentów łuku są mierzone czy rozważane w odniesieniu do bieżącej transformacji, ale segmenty wynikowe, które są obliczane na podstawie tych nietransformowanych punktów, są przekształcane, gdy są dodawane do ścieżki. Ponieważ wszystkie obliczenia są wykonywane w przestrzeni nietransformowanej, ale wszystkie istniejące wcześniej segmenty ścieżki są przekształcane, zdolność do prawidłowego wykonania obliczeń może pośrednio zależeć od możliwości zwrotnego przekształcenia bieżącego końca bieżącej ścieżki z powrotem w nieprzekształcone współrzędne.
Jeśli z jakiegoś powodu nie ma możliwości obliczenia i wpisania wskazanego okręgu, cała operacja po prostu doda segmenty, aby wymusić prostą do punktu p1. Możliwe przyczyny niepowodzenia obliczeń to:
- Bieżąca ścieżka jest pusta
- Segmenty
p0-> p1-> p2są współliniowe - bieżąca transformacja jest nieodwracalna, tak że bieżący punkt końcowy bieżącej ścieżki nie może zostać zwrotnie przekształcony do celów obliczeniowych.
Klasa Listing 25_33
Ściągnij klasę Listing25_33
GraphicsContext gc = cv.getGraphicsContext2D();
//-
gc.beginPath();
gc.moveTo(20,20);
gc.lineTo(200,20);
gc.arcTo(200,60, 130, 100, 20);
gc.lineTo(20,40);
gc.stroke();


