java - 为什么 Java AffineTransforms 是反向复合的?

标签 java swing graphics2d affinetransform

使用Graphics2DAffineTransforms 完成的Java 转换具有最后指定、先应用的顺序。例如,要旋转组件然后平移它,您首先调用 translate(),然后调用 rotate()。这是为什么?是否有一些有利于它的应用程序或实现?对我来说,这似乎违反直觉。

我知道AffineTransforms是用矩阵表示的,并且(虽然我不知道细节)可以通过将矩阵相互相乘来连接多个变换。我不明白的是为什么这似乎是右乘而不是左乘。

最佳答案

这样想:后面指定的变换更接近后面的绘图基元,因此首先应用。

此序列使对复杂绘图应用变换变得更加简单。假设您有一个方法可以绘制一些复杂的图形并且自身也使用转换。您希望图形以不同的尺寸出现两次。您可以先设置缩放变换,然后调用您的方法。对于第二次外观,您设置另一个缩放比例,然后再次调用您的方法。

如果以其他顺序指定转换,则这是不可能的。

关于java - 为什么 Java AffineTransforms 是反向复合的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22796137/

相关文章:

java.lang.SecurityException : JAR manifest requested to run in all-permissons only

java - java类之间的通信

java - 多线程应用程序中的单独日志文件

java - 如何使用 JAXB 编码器处理转义字符

java - JPanel 出现在 Netbeans Debug模式中,但不在运行模式中

java - 如何避免调用paint()方法时重新初始化一维数组

java - 如何将字符串数组显示到 JPanel?

Java Graphics2D绘制具有透明颜色的图像

java - 如何将 GRAL 图导出为 JPG?

java - 旋转 BufferedImage 实例