2

内部に次のコードがありますPAffineTransform

/**
     * Scales the transform about the given point by the given scale.
     * 
     * @param scale to transform the transform by
     * @param x x coordinate around which the scale should take place
     * @param y y coordinate around which the scale should take place
     */
    public void scaleAboutPoint(final double scale, final double x, final double y) {

        //TODO strange order

        translate(x, y);
        scale(scale, scale);
        translate(-x, -y);
    }

逆にするのは正しくないでしょうか:

        translate(-x, -y);
        scale(scale, scale);
        translate(x, y);

使用されるすべてのメソッドは、 と同じAffineTransformです。

アップデート

私の間違い。

順次変換修正とは、右からの行列乗算を意味します。したがって、変換は左からの行列乗算であるため、変換中に最後に適用された変更が最初に機能します。

4

1 に答える 1