我有一个旧图书馆(技术债务),现在需要留在原地,它使用AWT AffineTransform。我们的新图形代码使用JavaFX Affine。两者之间是否有明确的1:1映射?
如果现有的FLOSS库提供此映射作为实用程序,我将不胜感激。如果没有,请描述如何将java.awt.geom.AffineTransform的实例转换为javafx.scene.transform.Affine的实例。
代替明确的转换路径,我将接受两个类之间兼容性的描述以及使用这两个类的挑战。
答案 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]);