我正在尝试在圆圈上创建一条线。
我尝试过的事情:
我将圆圈添加到StackPane,然后将StackPane和行放到我发送到场景构造函数的组中,得到了一些不需要的结果,例如stackpane没有在舞台上完全展开 < / p>
在圆圈之后添加该行自动将其置于其上方,但我需要对其进行更多控制。
答案 0 :(得分:6)
JavaFX如何绘制
JavaFX使用Painter's algorithm,从头到尾依次绘制children节点的Parent,以便最后的节点将绘制在第一个节点上。
这是在retained mode pulse而不是immediate mode上完成的。因此,在您放弃对JavaFX图形系统的逻辑控制之前,不会绘制项目。这意味着您可以将项目添加到场景图形中,然后根据需要在场景图形中重新排序或移动它们,然后再绘制它们。
JavaFX中的3D绘画也可以使用Z-buffering,但这个答案仅涉及具有相同z坐标值的元素的2D绘制,而没有Z缓冲。
如何设置节点的绘制顺序
通过将节点添加到父级的子级列表,您可以将节点放在Group父级或Pane父级中。将按照将它们添加到子列表的顺序绘制节点。
如果您希望使用CSS,则窗格很好,否则组通常会这样做。 Pane还具有可调整范围,而一组则没有。出于这些原因,我通常更喜欢使用Pane而不是Group。
要更改子项的绘制顺序,可以在子项列表中的位置移动节点。
例如,以下代码将更改父窗格子窗口列表中第一个和第五个项目的绘制顺序:
import shutil
shutil.rmtree('log_dir', ignore_errors=True)
此外,Node具有toFront和toBack便捷方法,可将节点移至节点的父级子列表的后面或前面。< / p>
有关布局窗格使用情况的建议
不要使用StackPane等布局窗格来保存您希望明确定位的节点。管理布局窗格(如StackPane)旨在根据布局窗格的内部算法自动为您处理节点布局。例如,默认情况下,添加到StackPane的每个节点都将在StackPane的中间居中。
相关