【发布时间】:2018-11-01 15:05:14
【问题描述】:
我愿意借助 graphics2D 和 BufferedImage 在 Java 画布上显示透明图像。
这是加载图像的代码。
private static BufferedImage sprites,board;
public static void load(){
try {
board = new BufferedImage(100,100,BufferedImage.TYPE_INT_ARGB);
board = ImageIO.read(new File("res/chesssprite.png"));
} catch (IOException ex) {
Logger.getLogger(SpriteManager.class.getName()).log(Level.SEVERE, null, ex);
}
}
这是渲染图像的代码
public void render(){
BufferStrategy bs = this.getBufferStrategy();
if(bs == null){
this.createBufferStrategy(3);
return;
}
Graphics g = bs.getDrawGraphics();
Graphics2D g2d = (Graphics2D) g;
{
g2d.setColor(new Color(150,150,150));
g2d.fillRect(0,0,getWidth(), getHeight());
g2d.setComposite(AlphaComposite.Src);
g2d.drawImage(board,0,0,null);
}
g = g2d;
g.dispose();
bs.show();
}
我在网上搜索了很多,但没有找到解决方案。如果有人知道如何解决这个问题。
这是输出的样子
【问题讨论】:
-
那不是透明图片。它似乎基于透明图像,但您使用的图像具有不透明的灰色棋盘图案作为其背景(通常由图像编辑器和查看器用于直观地指示透明区域)。
-
@VGR 我认为它是透明的,但不确定。如果你能告诉我如何让它透明
-
在computergraphics.stackexchange.com 上获得答案可能会更好。就个人而言,我会使用 GIMP 的模糊选择工具来选择和清除棋盘区域。
-
@VGR 好的!现在我让它透明了,但输出很有趣!!现在只要有透明度,它就会显示黑色。虽然离解决方案更近了一步。
标签: java canvas bufferedimage graphics2d