2015-07-12 124 views
0

所以我想弄清楚JavaFX坐标系统是如何工作的,并获得ScatterChart原点的坐标。我正在制作视频/动画编辑器,并决定使用ScatterChart制作时间轴,其中节点是拖放到媒体(图像,视频或音频)的节点(类似于Windows Movie Maker)。 ScatterChart是放置在ScrollPane中的,以便用户可以缩放和平移时间轴。 要显示指示玩家位置的线,我需要时间线的开始和结束的坐标,以便我可以在图表背景中将线添加到窗格。 我似乎无法获取原点的坐标,无论我尝试什么。 enter image description hereJavaFX图表原点坐标

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

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

任何人都可以提供一个解决方案,也许在JavaFX的如何协调的解释是如何计算的?

+1

看起来你在布局执行之前调用了这些方法。您需要在'xAxis'添加到场景中,放置在窗口中并且窗口显示在屏幕上之后调用它们。 –

+0

我在初始化方法中调用这些函数,之后将带有轴的系列添加到图中。我甚至试图添加一个圆形(半径1)的图表数据并获得它的位置,但所有以下调用: 'start.getNode()。getBoundsInLocal() start.getNode()。localToScene(start.getNode ).getBoundsInLocal(),true); parent.sceneToLocal(boundsInScene)' 导致以下输出: '[minX:-1.0,minY:-1.0,minZ:0.0,width:2.0,height:2.0,depth:0.0,maxX:1.0,maxY: 1.0,maxZ:0.0]' – Sincress

+0

嗯,那正是我的观点。在放置在屏幕上之前,您几乎不可能期望在屏幕上显示某些东西的位置。 –

回答

0

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

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

父级是图表本身。简单地通过将起始偏移量添加到getValueForDisplay函数的结果并将最大X坐标作为参数,即可获取结束坐标。