我想知道是否有辦法創建一個ImageIcon,它是另一個ImageIcon的鏡像。創建另一個鏡像的ImageIcon
在谷歌搜索,我發現如何使用許多AWT庫。
有沒有辦法與Swing做到這一點?如果沒有,我仍然遇到麻煩的AWT方法:
我想鏡像的ImageIcon是一個動畫gif(包含透明顏色),並且AWT方法返回一個不透明的(透明顏色被更改以不透明的黑色)和非動畫gif。
任何想法如何保持動畫和透明色?
這裏是AWT代碼,我發現(rangerStand是原始的ImageIcon):
Image reversed = rangerStand.getImage();
BufferedImage bufferedImage = new BufferedImage(reversed.getWidth(null), reversed.getHeight(null), BufferedImage.TYPE_INT_RGB);
Graphics gb = bufferedImage.getGraphics();
gb.drawImage(reversed, 0, 0, null);
gb.dispose();
AffineTransform tx = AffineTransform.getScaleInstance(-1, 1);
tx.translate(-reversed.getWidth(null), 0);
AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
bufferedImage = op.filter(bufferedImage, null);
ImageIcon lol = new ImageIcon(bufferedImage);
this.sprite.setIcon(lol);
感謝您的閱讀。
+1原始的方式來解決這個問題 – 2009-11-10 16:04:37
'ImageIcon lolimg = new MirrorImageIcon(「Images/Sprites/Ranger/stand.gif」); \t \t JLabel lolabel = new JLabel(lolimg); \t \t lolabel.setBounds(16,0,16,16); \t \t panel.add(lolabel);' panel = getContentPane()我的JApplet。 JLabel是空的。我究竟做錯了什麼 ? – 2009-11-10 16:26:34
hm ...我真的不知道...嘗試沒有手動設置邊界和使用佈局管理器。也許這將工作。你有沒有嘗試我的代碼?嘗試使用圖像「Images/Sprites/Ranger/stand.gif」,如果這不起作用,那麼其他地方也是錯誤的... – 2009-11-10 16:30:18