1

a を回転させて a のBufferedImage中に表示しようとしていますJLabel( a の中にありますJPanel)。現在の結果では、黒い背景に対して 10 度回転した白い正方形が生成されますが、画像は正方形内に存在しません。回転していない場合 、それ自体が の中に適切に表示されるmyPictureため、空白ではないことはわかっています。myPictureJPanel

コードは次のとおりです。

int w = myPicture.getWidth();    

int h = myPicture.getHeight();  

BufferedImage newImage = new BufferedImage(w, h, myPicture.getType());

Graphics2D graphic = newImage.createGraphics();

graphic.rotate(Math.toRadians(10), w/2, h/2);

graphic.drawImage(myPicture, null, 0, 0);

picLabel.setIcon(new ImageIcon(newImage));
4

2 に答える 2

0

私は自分の問題を解決しました。問題はコードにありました:

myPicture.getType()

プログラムに入れることができる画像の種類にはさまざまなバリエーションがあるため、新しい BufferedImage への描画を開始したときの結果は予測できません。タイプを明示的に設定することで問題を解決しました。私の場合はこれが必要でした

BufferedImage.TYPE_INT_ARGB

したがって、完全な声明は次のとおりです。

BufferedImage newImage = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
于 2013-04-03T16:31:24.337 に答える