我目前有一个图像,我作为BufferedImage加载到程序中。这个BufferedImage放在一个具有固定大小的JPanel类中。
现在我遇到的问题是如何在这个固定大小的JPanel中平移这个大的BufferedImage。
JPanel尺寸肯定小于图像。
谢谢!
答案 0 :(得分:3)
首先,将一些滚动条附加到JPanel(南部和东部,使用BorderLayout
),只有在图像太大和/或太高时才会显示。在剩余空间(中心)附加另一个JPanel
。在内部JPanel
中,您将覆盖paintComponent
方法,并将BufferedImage
的部分绘制到JPanel
中。使用滚动条的偏移量来偏移图像,使用内部JPanel
绘制宽度和高度(视口)。
注意:只要价值发生变化,您的滚动条就会调用内部repaint
的{{1}}方法。
只要需要重新绘制图像,系统就会自动(或手动)调用JPanel
。这样,您就可以自定义为图像提供的视图(如果需要这样的功能);旋转,缩放,像素操作,自定义叠加等。
您还可以将一些MouseMotionListener附加到内部paintComponent
并根据鼠标移动修改滚动条的偏移(修改滚动条将自动触发图像上的重绘)以进行鼠标交互你的组件。只是一个想法。