2012-07-02 40 views
1

我在窗格上有兩個橢圓,其中一個應用了旋轉變換(旋轉點不是橢圓本身顯然:)),另一個沒有。現在我需要從變換的橢圓的中心畫一條直線到未變換的橢圓的中心。 所以我需要轉換的橢圓的座標,有沒有辦法檢索這些? (我需要他們除了畫線過其他計算)如何獲取javafx2中變換形狀的座標?

回答

2

使用localToParent方法。例如:

@Override 
    public void start(Stage stage) { 
     stage.setTitle(VersionInfo.getRuntimeVersion()); 
     Group root = new Group(); 

     // ellypsis with center in 100,100 
     Arc ellypsis = ArcBuilder.create().centerX(100).centerY(100).length(360).radiusX(100).radiusY(50).fill(Color.TRANSPARENT).stroke(Color.RED).build(); 
     // rotate 
     ellypsis.getTransforms().add(new Rotate(50, 50, 45)); 

     // find out where is 100,100 in rotated ellypsis 
     Point2D localToParent = ellypsis.localToParent(100,100); 

     // draw line from that point 
     Line line = new Line(localToParent.getX(), localToParent.getY(), 200, 200); 
     root.getChildren().addAll(ellypsis, line); 
     stage.setScene(new Scene(root, 300, 250)); 
     stage.show(); 
    } 
+1

謝謝,正是我想要的!現在我知道,我一直在徘徊那個方法做的到底是什麼。我每天都越來越愛javafx2! –

0

鑑於該問題提供缺少的代碼,我會給你一個答案數學:)

說你有ellipse1該中心X1和其中心是X2。改造提供以下

elipse1 --> f(elipse1) = elipse1' 
,如果你想知道的轉化橢圓 ellipse1'中心座標( X1')只是做以下

X1 --> f(X1) = X1` 

因此,概括地說,只是採用相同的轉換到你的原點X1,你將得到轉換後的座標X1'。現在你所要做的就是畫一條線,從X1'X2

+0

我不知道代碼在這裏會有幫助嗎?無論如何,問題在於你無法將變形應用於javafx中的某個點,並且無法詢問變換點的座標。這實際上是問題的全部問題:)如果你看起來像其他圖形系統似乎也是一個常見問題,只有選項似乎在弄清楚如何手動進行轉換(即計算出數學),並應用它再次在同一點上。我想避免這種情況,因爲javafx已經這樣做了,但不公開結果。 –