java在重写的paintComponent(…)中旋转图像方法
我只是想知道如何使用JLabel component的paintComponent()方法旋转矩形图像,并正确设置其新的宽度和高度
我试着旋转(见附图),图像比例变大了,但JLabel比例保持不变,是什么使图像超出JLabel边界或其他:所以我的问题是如何以更优化的方式动态设置图像新的宽度和高度到组件
你可以在下面搜索框中键入要查询的问题!
我只是想知道如何使用JLabel component的paintComponent()方法旋转矩形图像,并正确设置其新的宽度和高度
我试着旋转(见附图),图像比例变大了,但JLabel比例保持不变,是什么使图像超出JLabel边界或其他:所以我的问题是如何以更优化的方式动态设置图像新的宽度和高度到组件
# 1 楼答案
好的,那么您希望JLabel保留其尺寸,并调整图像大小
不管怎么说,你可能已经在使用仿射变换了,所以你可以使用一些三角学和最小/最大来找到旋转图像的AABB。适当缩放(我假设您已经在使用仿射变换来进行旋转)
编辑:
AABB=Axis Aligned Bounding Box,其边对应于旋转图像的最小/最大x,y坐标。只是一种更简洁的表达方式
# 2 楼答案
+1可添加评论和链接
使用link中的方法(稍加编辑以省略
GraphicsConfiguration
、drawRenderImage(..)
和更改的变量名):下面是一个例子:
参考:
# 3 楼答案
好的,我试过大卫·克鲁坎普给我看的样品。谢谢,大卫,你给我指明了正确的方向。我认为这是可以依靠的
David Kroukamp's result image preview
我测试了代码片段,结果图像+其组件的比例都发生了动态变化。 但我得到的结果是,组件宽度总是比它的内部图像宽一点:s
例如,这里是我的图像版本,旋转45度
。。。正如我发现的(在蓝色背景上),它的宽度并不完全适合环绕白色图像。。。实际上,我正在寻找某种标准Java图像处理旋转解决方案,但我找不到它:(因此,我必须深入研究这个问题,至少找出如何解决“更广泛的影响”和避免每次重新绘制时创建新的BuffereImage对象
好吧,作为我研究的结果,我试着写一些我的旋转代码改编。这是:
>;测试
。。。因此,以-30度倾斜旋转的结果图像如下所示
我衷心希望这条建议能挽救一天:)
谢谢大家的帮助