如何将java.awt.geom.AffineTransform的实例转换为javafx.scene.transform.Affine的实例

时间:2015-10-01 20:28:43

标签: java graphics javafx awt

我有一个旧图书馆(技术债务),现在需要留在原地,它使用AWT AffineTransform。我们的新图形代码使用JavaFX Affine。两者之间是否有明确的1:1映射?

如果现有的FLOSS库提供此映射作为实用程序,我将不胜感激。如果没有,请描述如何将java.awt.geom.AffineTransform的实例转换为javafx.scene.transform.Affine的实例。

代替明确的转换路径,我将接受两个类之间兼容性的描述以及使用这两个类的挑战。

1 个答案:

答案 0 :(得分:1)

Affine和AffineTransform的主要区别是:
仿射可以处理2D和3D变换,而AffineTransform仅限于2D 仿射源自变换类,它也是旋转,平移,剪切和缩放的基类。如果转换仅使用其中一种技术,则应使用这些类而不是Affine。

如果您想将AffineTransform解析为Affine:

给定构造函数:

AffineTransform(double m00, double m10, double m01, double m11, double m02, double m12)
Affine(double mxx, double mxy, double tx, double myx, double myy, double ty)

其中:

mxx = m00
mxy = m01 
tx  = m02 
myx = m10 
myy = m11 
ty  = m12 

AffineTransform at解析为Affine a

double[] m  = new double[6];
at.getMatrix(m);
Affine a = new Affine(m[0],m[2],m[4],m[1],m[3],m[5]);