如何使用 Java/Swing 旋转图像,然后将其原点设置为 0,0?

2024-01-20

我能够旋转已添加到 JLabel 的图像。唯一的问题是,如果高度和宽度不相等,旋转后的图像将不再出现在 JLabel 的原点 (0,0) 处。

这就是我正在做的事情。我还尝试使用 AffineTransform 并旋转图像本身,但结果相同。

Graphics2D g2d = (Graphics2D)g;
g2d.rotate(Math.toRadians(90), image.getWidth()/2, image.getHeight()/2);
super.paintComponent(g2d);

如果我有一个宽度大于高度的图像,则使用此方法旋转该图像然后绘制它将导致图像垂直绘制在点 0,0 上方,水平绘制在点 0,0 右侧。


使用 g2d.transform() 将图像移回到需要的位置。我只是想象计算可能是什么,但我认为是这样的:

int diff = ( image.getWidth() - image.getHeight() ) / 2;
g2.transform( -diff, diff );

顺便说一句,您可能会遇到标签报告其首选尺寸的问题 - 您可能需要重写 getPreferredSize() 并考虑在旋转时交换图像宽度和高度。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Java/Swing 旋转图像,然后将其原点设置为 0,0? 的相关文章

随机推荐