1

現在、BufferedImageとしてプログラムにロードする画像があります。このBufferedImageは、固定サイズのJPanelクラス内に配置されます。

今私が直面している問題は、この固定サイズのJPanel内でこの大きなBufferedImageをどのようにパンできるかということです。

JPanelの寸法は画像よりも明らかに小さいです。

ありがとう!

4

1 に答える 1

3

BorderLayoutまず、画像が大きすぎるか高すぎる場合にのみ表示されるように、いくつかのスクロール バーを JPanel に ( を使用して南と東に) 接続します。JPanel残りのスペース(中央)にもう 1 つ取り付けます。その内部JPanelで、メソッドをオーバーライドし、paintComponentあなたの部分BufferedImageJPanel. スクロール バーのオフセットを使用して画像をオフセットJPanelし、幅と高さの内側を描画します (ビューポート)。

注:スクロール バーは、値が変更されるたびにrepaintインナーのメソッドを呼び出します。JPanel

paintComponent、イメージの再描画が必要になるたびに、システムによって自動的に (または手動で) 呼び出されます。これを行うと、画像に与えるビューをカスタマイズできます (そのような機能が必要な場合)。回転、スケーリング、ピクセル操作、カスタム オーバーレイなど。

また、 MouseMotionListenerを内部にアタッチし、マウスの動きに応じてスクロール バーのオフセットを変更することもできますJPanel(スクロール バーを変更すると、画像の再描画が自動的にトリガーされます)。ちょっとした考え。

于 2012-08-03T06:53:08.250 に答える