我在JPanel
里面有图片。我想旋转图像。是否有可能使用Graphics
旋转JPanel
,图像是可旋转的,只是出于好奇才有可能旋转JPanel?我们可以倾斜一个角度的JPanel吗?
回答
无法旋转JPanel本身,但它可以旋转里面的任何图像。有很多方法可以做到这一点,例如,您可以覆盖JPanel的public void paint(Graphics g)
,然后将Graphics
转换为Graphics2D
。这是非常有用的类,做旋转和更多;)检查API文档关于这一个的更多信息。
据我所知你不能旋转JPanel本身,但你可能能够使用Java2D旋转JPanel内的图像。 Here是一篇可能有帮助的文章。
编辑:
有可能实际上是如果重写他们的paintXxx方法和使用AffineTransform旋转JComponents(如JPanel中)的方法。
是的,这是可能的。但你不会旋转面板,但图像:
public void paintComponent(Graphics gg)
{
Graphics2D g = (Graphics2D) gg;
g.setRenderingHint(RenderingHints.KEY_ANTI_ALIAS, RenderingHints.VALUE_ANTI_ALIAS_ON);
AfflineTransform matrix = g.getTransform(); // Backup
float angle = Math.PI/4.0f; // 45°
g.rotate(angle);
/* Begin */
g.drawImage(yourImage, [your coordinates], null);
/* End */
g.setTranform(matrix); // Restore
}
一切和/* End */
之间/* Begin */
将绘制旋转。
(我没有测试的代码,所以,他们可能是一些语法错误...)
是的!这可能也相当简单。我还没有完成旋转,但我已经完成了其他仿射变换(在整个项目中非常成功地缩放了整个GUI)。我不明白为什么轮换应该有任何不同。
不是试图缩放每个组件,而是使用可以在Graphics对象上设置转换的事实。由于这是所有呈现的组件之间共享的,所以你可以立即“免费”转换所有东西。认识到转换只是一个渲染过程步骤是非常重要的......即所有组件仍然相信它们具有在未转换的世界中给予它们的界限(位置+大小)。这给我们带来了正确处理鼠标事件的挑战。要做到这一点,只需在主面板前添加一个玻璃面板即可。此窗格收集所有鼠标事件,并在事件上应用变换的反向,然后将事件向前发送到所有其他组件。
从概念上讲非常简单!尽管如此,我还记得它做了一些调整,尽管它很清脆。特别是在java中呈现的文本(字体)没有正确线性缩放(它以与字体大小相对应的离散步骤进行缩放)这一事实在我的尺度仿射变换情况下造成了最后的挑战。如果你只是旋转,也许你不必担心。
我从JXTransformer得到了灵感:http://www.java.net/blog/alexfromsun/archive/2006/07/jxtransformer_t.html
- 1. OpenCV - 调整倾斜角度的照片(倾斜)
- 2. 得到倾斜角度的Android
- 3. 获取UIView的当前倾斜角度
- 4. 您是否可以使用Greensock倾斜,倾斜或更改视角?
- 5. 质心为一个角度倾斜的矩形部分theta
- 6. 2D 45度倾斜倾斜瓷砖
- 7. 使用CMMotionManager测量倾斜角度
- 8. iPhone倾斜角度 - 使用陀螺仪?
- 9. 位置UILabel在一个倾斜或角度
- 10. 倾斜对角线的CSS
- 11. 带圆角的倾斜格
- 12. Android的 - 倾斜一个TextView
- 13. 如何在Internet Explorer中以倾斜角度渲染div
- 14. 与倾斜右下角
- 15. 我们可以在kitchen.yml中添加一个角色吗?
- 16. 我们可以自己写一个EOF角色吗?
- 17. 试图将多个div倾斜到不同的随机角度
- 18. 我可以动画一个圆弧的结束角度吗?
- 19. 加速度计的值与倾斜仪一样吗?
- 20. 可以改变倾斜平面的坐标系吗?
- 21. 我们可以在单个角度项目中创建两个router.js文件吗?
- 22. 我可以链接角度指令吗?
- 23. 视差分度倾斜
- 24. 计算旋转角度而不是倾斜角度大于360度
- 25. 可以使用HTML或CSS轻松地倾斜图像吗?
- 26. 我可以增加JPanel的大小吗?
- 27. 背景图像倾斜的div角落
- 28. 如何获取Windows Phone 8设备的倾斜角度
- 29. 倾斜和角度之间的关系 - CGAffineTransform
- 30. 如何获取Android手机的倾斜角度?