gpt4 book ai didi

java - 旋转和缩放——如何同时进行并获得正确的结果?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:59:03 25 4
gpt4 key购买 nike

我有一组在图形上下文中绘制 vector 的 Java2D 调用。我希望将图像尺寸放大一倍,然后旋转 90 度。

我正在使用以下代码来执行此操作:

Graphics2D g2 = // ... get graphics 2d somehow ...
AffineTransform oldTransform = g2.getTransform();
AffineTransform newTransform = (AffineTransform)oldTransform.clone();
newTransform.concatenate(AffineTransform.getTranslateInstance(x1, x2));
newTransform.concatenate(AffineTransform.getScaleInstance((double)newW/(double)iconW, (double)newH/(double)iconH));
newTransform.concatenate(AffineTransform.getRotateInstance(Math.toRadians(rotationAngle), (double)iconW/2.0d, (double)iconH/2.0d));
// ... do my drawing ...

这会旋转和缩放,但是,缩放并没有按照我想要的方式应用。就好像它在缩放之前被旋转了,从而使图像在错误的轴上变宽。

有更好的方法吗?

最佳答案

我相信这些转换是像堆栈一样实现的 - 所以最后一个转换首先执行。尝试颠倒旋转和缩放变换的顺序,您应该会得到想要的东西。

newTransform.concatenate(AffineTransform.getTranslateInstance(x1, x2));
newTransform.concatenate(AffineTransform.getRotateInstance(Math.toRadians(rotationAngle), (double)iconW/2.0d, (double)iconH/2.0d));
newTransform.concatenate(AffineTransform.getScaleInstance((double)newW/(double)iconW, (double)newH/(double)iconH));

关于java - 旋转和缩放——如何同时进行并获得正确的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/682770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com