我正在嘗試旋轉(zhuǎn)a BufferedImage并將其顯示在a JLabel(位于內(nèi)JPanel)中。當(dāng)前結(jié)果產(chǎn)生一個(gè)白色正方形,相對(duì)于黑色背景旋轉(zhuǎn)了10度,但正方形內(nèi)部不存在圖像。我知道m(xù)yPicture不是空白,因?yàn)閙yPicture它本身JPanel在未旋轉(zhuǎn)時(shí)會(huì)正確顯示在內(nèi)。這是代碼: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));
2 回答

幕布斯6054654
TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊
我解決了自己的問(wèn)題。問(wèn)題在于代碼:
myPicture.getType()
由于可以放入程序中的圖像類(lèi)型存在很多可變性,因此當(dāng)您開(kāi)始繪制到新的BufferedImage中時(shí),結(jié)果將是不可預(yù)測(cè)的。我通過(guò)顯式設(shè)置類(lèi)型來(lái)解決問(wèn)題,在我的情況下需要
BufferedImage.TYPE_INT_ARGB
因此,完整的語(yǔ)句為:
BufferedImage newImage = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
添加回答
舉報(bào)
0/150
提交
取消