2014-02-17 56 views
1

在JavaFX 2.2中,除了將它們添加到Node之外,似乎對Transform對象不能做太多的工作。特別是,沒有代數運算,因此您可以與另一個進行一個轉換。JavaFX中是否有等價的AffineTransform.createTransformedShape(Shape)?

我想原因是大部分的計算都應該由GPU直接完成,所以不要讓人們試圖以編程的方式來完成它,以防止一些放緩。

但有時你確實想知道應用轉換的最終結果是什麼。具體來說,java.awt.geom.AffineTransform有這個不錯的方法createTransformedShape,將java.awt.Shape變成給定轉換下的等效形狀。我在JavaFX中找不到任何相同的東西,我想不出一種解決方法。

我錯過了什麼或有沒有人有一個聰明的主意,不涉及重新實施Shape類?

回答

2

我不相信已將相當於AffineTransform.createTransformedShape的確切等價物添加到Java 8.然而,您可以通過將變換添加到shape's transform list來將變換應用於形狀。所以從某種意義上說,變換後的形狀只是一個在變換列表中包含一些自定義變換的形狀。

對於Java 8,JavaFX中的轉換函數大大增強,允許composition of transformations。此外,各種向量如代數運算被添加了Point2DPoint3D類。

+0

在AWT中,諸如'Arc2D','Ellipse2D','Rectangle2D'等等都實現了'Shape',這確保它們由'Path'段組成。你可以在裏面偷看,看看他們是什麼樣的路徑以及他們開始的座標。看來JavaFX不允許這樣做,所以如果你想要,例如計算相當於幾何形狀的'Path',你必須自己做。我的意思是,甚至沒有'Polygon'和'Polyline'在JavaFX中擴展'Path'。我必須猜測這是爲了OpenGL的好處,但它有點煩人。 – TOB

相關問題