2015-01-20 5 views
2

JavaFX는 GraphicsContext에 하위 수준 경로 페인팅 방법과 높은 수준의 Path 노드를 제공합니다.JavaFX : 어떻게 GraphicsContext에 패스를 그릴 수 있습니까?

도형을 클래스에 저장하고 GraphicsContext에 그려야합니다. Path 클래스는 나에게 편리해 보입니다. 저는 그것이 씬 그래프에서 노드로 사용되기를 원하지만 필요한 모든 그리기 요소를 포함하고 있다는 것을 알고 있습니다.

GraphicsContext.fillPath(Path) 과 같은 방법을 찾고 있는데 아무 것도 없습니다.

Path 엘리먼트를 손으로 반복하고 낮은 레벨 GraphicsContext 메쏘드로 변환해야합니까, 아니면 뭔가를 놓쳤습니까?

+0

안녕하세요 Andi, 변수에 경로를 저장하고 lable 또는 이와 비슷한 것으로 설정할 수 있습니까? 귀하의 문제를 이해하지 못합니다 ... JavaFX에서는 데이터를 Label과 같은 특정 그래픽 객체에 바인딩 할 수 있습니다. 그래서 당신은 다음과 같은 것을 할 수 있습니다 : label.bind (StringPath) ->이 예제는 실제 코드가 아니지만 논리적 인 측면에서 이와 같이 동작합니다. –

+1

이것은 여러분의 질문에 대답하지 않지만 더 쉬운 방법입니다. 창에 캔버스를 추가 한 다음 창이나 그 밖의 캔버스의 노드 나 도형 (경로와 같은)을 그릴 수 있습니까? 이것이 내가 정의한 고속 그래프의 일부입니다. 또한 awt와 달리 javafx 캔버스에 XOR 드로잉 모드가 없어 보이기 때문에 노드를 이동하는 것이 더 쉽습니다. – brian

답변

1

Path 요소를 직접 반복하여 저수준 GraphicsContext 메서드로 변환해야합니까?

예. 사용자는 등, 예 beginPath(), moveTo(), lineTo(), closePath(), fill, stroke() 위해 적절한 그래픽 콘텍스트 방법합니다 (Path Rendering methods 참조) Path로부터 추출 된 데이터를 가지고 호출하는 번역기를 작성해야한다


오히려 경로를 사용하는 것보다 SVGPath을 사용할 수 있습니다. 장면 그래프 노드 데이터의 SVGPath를 GraphicsContext 메서드로 쉽게 변환 할 수 있습니다. 바로 gc.appendSVGPath(svgPath.getContent()) 일 수 있습니다.

+1

마지막으로 필자는 자신의 Path 클래스를 작성하여 소프트웨어 (JavaFX, Java 2D, Android, GWT)를 작성하는 모든 플랫폼에서 사용할 수 있습니다. 매우 간단합니다 ... [Here] (https://github.com/Xenoage/Zong/tree/0f0d6a721fb027d1d70dc049d3fe0c2350be4596/layout/src/com/xenoage/zong/symbols/path)는 데이터 구조이며 [여기] (https://github.com/Xenoage/Zong/blob/0f0d6a721fb027d1d70dc049d3fe0c2350be4596/renderer-javafx/src/com/xenoage/zong/renderer/javafx/symbols/JfxPath.java)는 JavaFX 렌더러가 어떻게 처리하는지 예제입니다. 성능상의 이유로 String의 SVGPath는 옵션이 아닙니다. – Andi

+0

좋은 깨끗한 구현 Andi. 언제나 [자신의 질문에 답할 수 있습니다] (http://stackoverflow.com/help/self-answer). – jewelsea

관련 문제