現在、BufferedImageとしてプログラムにロードする画像があります。このBufferedImageは、固定サイズのJPanelクラス内に配置されます。
今私が直面している問題は、この固定サイズのJPanel内でこの大きなBufferedImageをどのようにパンできるかということです。
JPanelの寸法は画像よりも明らかに小さいです。
ありがとう!
BorderLayout
まず、画像が大きすぎるか高すぎる場合にのみ表示されるように、いくつかのスクロール バーを JPanel に ( を使用して南と東に) 接続します。JPanel
残りのスペース(中央)にもう 1 つ取り付けます。その内部JPanel
で、メソッドをオーバーライドし、paintComponent
あなたの部分BufferedImage
をJPanel
. スクロール バーのオフセットを使用して画像をオフセットJPanel
し、幅と高さの内側を描画します (ビューポート)。
注:スクロール バーは、値が変更されるたびにrepaint
インナーのメソッドを呼び出します。JPanel
はpaintComponent
、イメージの再描画が必要になるたびに、システムによって自動的に (または手動で) 呼び出されます。これを行うと、画像に与えるビューをカスタマイズできます (そのような機能が必要な場合)。回転、スケーリング、ピクセル操作、カスタム オーバーレイなど。
また、 MouseMotionListenerを内部にアタッチし、マウスの動きに応じてスクロール バーのオフセットを変更することもできますJPanel
(スクロール バーを変更すると、画像の再描画が自動的にトリガーされます)。ちょっとした考え。