Charts JavaFX图表原点坐标

Charts JavaFX图表原点坐标,charts,javafx,position,coordinates,Charts,Javafx,Position,Coordinates,所以我试图弄清楚JavaFX坐标系是如何工作的,并得到散点图原点的坐标。我正在开发一个视频/动画编辑器,我决定使用散点图制作时间线,其中节点是媒体图像、视频或音频,并将其拖动到类似于Windows Movie Maker的位置。散点图放置在滚动窗格中,以便用户可以缩放和平移时间线。 要显示指示玩家位置的线,我需要时间线开始和结束的坐标,以便在图表背景的窗格中添加一条线。 不管我怎么做,我似乎都找不到原点的坐标 我试图得到x轴并在图表上找到它的位置,但它不起作用。我甚至尝试在图表中添加一个点并找到

所以我试图弄清楚JavaFX坐标系是如何工作的,并得到散点图原点的坐标。我正在开发一个视频/动画编辑器,我决定使用散点图制作时间线,其中节点是媒体图像、视频或音频,并将其拖动到类似于Windows Movie Maker的位置。散点图放置在滚动窗格中,以便用户可以缩放和平移时间线。 要显示指示玩家位置的线,我需要时间线开始和结束的坐标,以便在图表背景的窗格中添加一条线。 不管我怎么做,我似乎都找不到原点的坐标

我试图得到x轴并在图表上找到它的位置,但它不起作用。我甚至尝试在图表中添加一个点并找到其节点的位置,但这也给出了一个0,0的位置

xAxis.localToParent(0,0) // prints 0, 0
xAxis.localToScene(0,0) // prints 0, 0
xAxis.localToScreen(0,0) // gives null

有谁能提供一个解决方案,或者解释一下JavaFX中的坐标是如何计算的

我通过添加图表数据解决了这个问题,一个点位于图表的开头,X坐标为0。这个点的节点是一个半径为0或1的圆,这是我用来获取图形起点的X坐标的。获取此偏移量的函数是:

Bounds boundsInScene = point.getNode().localToScene(point.getNode().getBoundsInLocal(), true);
return parent.sceneToLocal(boundsInScene).getMinX();

父对象是图表本身。只需将开始偏移量添加到getValueForDisplay函数的结果中,并以max X坐标为参数,即可获得结束坐标。

看起来您在执行布局之前调用了这些方法。您需要在xAxis添加到场景、放置在窗口中以及屏幕上显示的窗口之后调用它们。我在初始化方法中调用这些函数,在带有轴的序列添加到图形中之后。我甚至尝试添加圆半径为1的图表数据并获取其位置,但以下所有调用都是:start.getNode.getBoundsInLocal start.getNode.localToScenestart.getNode.getBoundsInLocal,true;parent.sceneToLocalboundsInScene生成以下输出:[minX:-1.0,minY:-1.0,minZ:0.0,宽度:2.0,高度:2.0,深度:0.0,maxX:1.0,maxY:1.0,maxZ:0.0]这正是我的观点。在屏幕上放置某个对象之前,您很难获得该对象在屏幕上的位置。同样有趣的是,带有event.getX的鼠标单击处理程序为我提供了所需的精确坐标,约为63.0,并尝试通过编程进行复制,但没有结果。再次,只有当节点显示在屏幕上时,它才会工作。显然,鼠标处理程序就是这样,因为它是在用户单击鼠标时调用的;但它在initialize方法中不起作用,因为在初始化UI时以及显示UI之前,必须调用initialize方法。