基本的には、コンポーネントのGraphics
コンテキストを回転させると、元の画像には影響しません、それまでの画像を、ペイントしています。
代わりに、あなたは例えば、画像や絵画、それを回転しなければならない...
public BufferedImage rotateImage() {
double rads = Math.toRadians(RotationOfImage.value);
double sin = Math.abs(Math.sin(rads));
double cos = Math.abs(Math.cos(rads));
int w = transparentImage.getWidth();
int h = transparentImage.getHeight();
int newWidth = (int) Math.floor(w * cos + h * sin);
int newHeight = (int) Math.floor(h * cos + w * sin);
BufferedImage rotated = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = rotated.createGraphics();
AffineTransform at = new AffineTransform();
at.translate((newWidth - w)/2, (newHeight - h)/2);
at.rotate(Math.toRadians(RotationOfImage.value), w/2, h/2);
g2d.setTransform(at);
g2d.drawImage(transparentImage, 0, 0, this);
g2d.setColor(Color.RED);
g2d.drawRect(0, 0, newWidth - 1, newHeight - 1);
g2d.dispose();
}
次に、あなたが何かなどをやって、それを描くことができ...
今
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g.create();
BufferedImage rotated = rotateImage();
int x = (getWidth() - rotated.getWidth())/2;
int y = (getHeight() - rotated.getHeight())/2;
g2d.drawImage(rotated, x, y, this);
g2d.dispose();
}
、あなたはこれを最適化することができるので、角度が変更されたときにのみ画像の回転バージョンを生成できますが、私はあなたに任せます。
ps-これはテストしていませんが、question
なぜあなたは 'paintComponent'でそれを回転させていますか?回転した画像をペイントする必要があります。コンポーネントの 'Graphics'コンテクストを回転させているので、あなたのやり方でイメージに影響を与えることはありません – MadProgrammer