仿射变换 - 围绕一点进行缩放

时间:2013-06-14 16:32:59

标签: java affinetransform

我正试图在某个点上缩放我在Java中的形状。

当我使用AffineTransform.scale方法时,它会根据左上角进行缩放。无论如何都要按比例锚定在一个点上(比如说这个案例的窗口中心)。

谢谢,

1 个答案:

答案 0 :(得分:4)

我同意Hovercraft Full of Eels的说法,正确的做法是将中心转换到左上角,缩放,然后将左上角翻译回中心。

但是,如果您希望它在少于三个步骤中执行,则转换为:

x⟼S(x-c)+ c = Sx +(c-Sc),

其中S是缩放变换,c是坐标相对于左上角的中心。

因此,您需要进行缩放,然后通过c - Sc进行翻译。