如何使用 BufferedImage 在 java 中绘制透明图像?
How to draw transparent image in java with BufferedImage?
我愿意在 graphics2D 和 BufferedImage 的帮助下在 java 中的 canvas 上显示透明图像。
这是加载图像的代码。
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();
}
我在网上搜索了很多,但没有给出解决方案。如果有人知道如何解决这个问题。
这是图片..
这是输出的样子
好的,遇到此类问题的人:
确保图像是透明的。在图像查看器中测试它。
删除行g2d.setComposite(AlphaComposite.Src);
此行添加 alpha 合成,使每个透明像素变黑。
我愿意在 graphics2D 和 BufferedImage 的帮助下在 java 中的 canvas 上显示透明图像。
这是加载图像的代码。
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();
}
我在网上搜索了很多,但没有给出解决方案。如果有人知道如何解决这个问题。
这是图片..
这是输出的样子
好的,遇到此类问题的人:
确保图像是透明的。在图像查看器中测试它。
删除行
g2d.setComposite(AlphaComposite.Src);
此行添加 alpha 合成,使每个透明像素变黑。