Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Graphics2D不能使用alpha?_Java_Bit Manipulation_Bufferedimage_Alpha_Graphics2d - Fatal编程技术网

Java Graphics2D不能使用alpha?

Java Graphics2D不能使用alpha?,java,bit-manipulation,bufferedimage,alpha,graphics2d,Java,Bit Manipulation,Bufferedimage,Alpha,Graphics2d,我正在我的2D引擎中实现层,我希望层是可堆叠的,我还希望在层中有一个“切割孔”的功能-这意味着使用alpha。然而,在独立编写时,我似乎无法获得任何东西来使用真正的alpha,它试图通过混合颜色来伪造它,例如(我的代码): buffereImage背景、前景; 公共图形测试(){ 背景=新的BuffereImage(500500,BuffereImage.TYPE_INT_ARGB); 前台=新的BuffereImage(500500,BuffereImage.TYPE_INT_ARGB);//

我正在我的2D引擎中实现层,我希望层是可堆叠的,我还希望在层中有一个“切割孔”的功能-这意味着使用alpha。然而,在独立编写时,我似乎无法获得任何东西来使用真正的alpha,它试图通过混合颜色来伪造它,例如(我的代码):

buffereImage背景、前景;
公共图形测试(){
背景=新的BuffereImage(500500,BuffereImage.TYPE_INT_ARGB);
前台=新的BuffereImage(500500,BuffereImage.TYPE_INT_ARGB);//完全支持alpha。
随机r=新随机();
int-white=Color.white.getRGB();
//随机画白点

对于(inti=0;i,您需要更改3件事才能使代码正常运行

正如@vandale所说,您需要在布尔构造函数中使用带有实际alpha的颜色。 第二,alpha是不透明度(因此对于透明颜色,它应该是0)。您可以得到:

 overlay.setColor(new Color(0x0000000, true));
 overlay.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_IN, 1f));
第三,您需要说明,您的绘制操作实际上将覆盖已经存在的内容(您不希望在现有内容的顶部绘制,而是替换为存在的透明颜色)

 overlay.setColor(new Color(0x0000000, true));
 overlay.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_IN, 1f));

要使代码正常运行,您需要更改3个方面

正如@vandale所说,您需要在布尔构造函数中使用带有实际alpha的颜色。 第二,alpha是不透明度(因此对于透明颜色,它应该是0)。您可以得到:

 overlay.setColor(new Color(0x0000000, true));
 overlay.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_IN, 1f));
第三,您需要说明,您的绘制操作实际上将覆盖已经存在的内容(您不希望在现有内容的顶部绘制,而是替换为存在的透明颜色)

 overlay.setColor(new Color(0x0000000, true));
 overlay.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_IN, 1f));

要使代码正常运行,您需要更改3个方面

正如@vandale所说,您需要在布尔构造函数中使用带有实际alpha的颜色。 第二,alpha是不透明度(因此对于透明颜色,它应该是0)。您可以得到:

 overlay.setColor(new Color(0x0000000, true));
 overlay.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_IN, 1f));
第三,您需要说明,您的绘制操作实际上将覆盖已经存在的内容(您不希望在现有内容的顶部绘制,而是替换为存在的透明颜色)

 overlay.setColor(new Color(0x0000000, true));
 overlay.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_IN, 1f));

要使代码正常运行,您需要更改3个方面

正如@vandale所说,您需要在布尔构造函数中使用带有实际alpha的颜色。 第二,alpha是不透明度(因此对于透明颜色,它应该是0)。您可以得到:

 overlay.setColor(new Color(0x0000000, true));
 overlay.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_IN, 1f));
第三,您需要说明,您的绘制操作实际上将覆盖已经存在的内容(您不希望在现有内容的顶部绘制,而是替换为存在的透明颜色)

 overlay.setColor(new Color(0x0000000, true));
 overlay.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_IN, 1f));


不确定alpha问题,但不要在绘制方法中使用ImageIO(或任何IO)。您需要通过
setComposite()设置合成
查看不同混合的类modes@camickr为什么?它不在循环中,所以只写一次文件。@vandale我正在对叠加图像执行此操作,请解释一下我是否做得不对?如果使用的是非不透明颜色,则需要使用
颜色(int rgba,boolean hasalpha)
constructor不确定alpha问题,但在绘制方法中不要使用ImageIO(或任何IO)。您需要通过
setComposite()设置合成
查看不同混合的类modes@camickr为什么?它不在循环中,所以只写一次文件。@vandale我正在对叠加图像执行此操作,请解释一下我是否做得不对?如果使用的是非不透明颜色,则需要使用
颜色(int rgba,boolean hasalpha)
constructor不确定alpha问题,但在绘制方法中不要使用ImageIO(或任何IO)。您需要通过
setComposite()设置合成
查看不同混合的类modes@camickr为什么?它不在循环中,所以只写一次文件。@vandale我正在对叠加图像执行此操作,请解释一下我是否做得不对?如果使用的是非不透明颜色,则需要使用
颜色(int rgba,boolean hasalpha)
constructor不确定alpha问题,但在绘制方法中不要使用ImageIO(或任何IO)。您需要通过
setComposite()设置合成
查看不同混合的类modes@camickr为什么?它不在循环中,所以只写一次文件。@vandale我正在对叠加图像执行此操作,请解释一下我是否做得不对?如果使用的是非不透明颜色,则需要使用
颜色(int rgba,boolean hasalpha)
Constructor奇妙。阿尔法倒转很有趣。知道它不是Graphics2D的错很好。奇妙。知道阿尔法倒转很有趣。知道它不是Graphics2D的错很好。奇妙。知道阿尔法倒转很有趣。知道它不是Graphics2D的错很好。奇妙。有趣的是阿尔法倒过来了。很高兴知道这不是2D的错。