2015-07-12 128 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座標作爲參數,即可獲取結束座標。