int width = 400;
int height = 300;
// 創建BufferedImage對象
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
// 獲取Graphics2D
Graphics2D g2d = image.createGraphics();
// ---------- 增加下面的代碼使得背景透明 -----------------
image = g2d.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT);
g2d.dispose();
g2d = image.createGraphics();
// ---------- 背景透明代碼結束 -----------------
// 畫圖
g2d.setColor(new Color(255,0,0));
g2d.setStroke(new BasicStroke(1));
g2d.draw
//釋放對象
g2d.dispose();
// 保存文件
ImageIO.write(image, "png", new File("c:/test.png"));
20110827
利用Graphics 生成函透明背景的Image
一般的情況下Image雖然會保有透明資訊,但是經過Graphics.drawImage得到Image卻會使來源Image失去透明資訊,透過以下方法可以保留來源圖的透明資訊。這樣的好處是可以把此Image當成其他Graphics的來原圖
20110823
Graphics.drawImage()的問題
透過Graphics.drawImage()可用來繪製圖片在Image物件上,包含透明色資訊的圖檔也可以,但是透明色像素會影響前一層Graphics繪製的背景
地圖與人物分別用不同的Graphics gMapScreen,gCharactorScreen畫出來再分別放進緩衝區Graphics gOffScreen裡,先放的Image MapScreen被後放的Image CharactorScreen的透明色穿過。
解決辦法:將人物與背景用同一個Graphics繪出,地圖就會正常顯示了
地圖與人物分別用不同的Graphics gMapScreen,gCharactorScreen畫出來再分別放進緩衝區Graphics gOffScreen裡,先放的Image MapScreen被後放的Image CharactorScreen的透明色穿過。
解決辦法:將人物與背景用同一個Graphics繪出,地圖就會正常顯示了
訂閱:
文章 (Atom)
