Java 如何使两个相交矩形变为透明

Java 如何使两个相交矩形变为透明,java,game-development,Java,Game Development,我的目标是用一个alpha值为128的黑色矩形填充屏幕,这样屏幕看起来就暗了,然后我可以将矩形渲染到屏幕上,它们渲染到的地方变成完全透明的,这样你就可以直接看到这个矩形了。我已经使屏幕部分填充为黑色,但当我在上面画一个矩形时,我无法使其透明。我从未使用过AlphaComposites,但我认为我必须使用其中一种来实现这一点。有人知道我该怎么做吗 私用色暗颜色=新颜色(0,0,0128),闪光灯颜色=新颜色(255255128); 公共空间渲染(图形g){ //绘制屏幕的黑暗部分。 图形2d g

我的目标是用一个alpha值为128的黑色矩形填充屏幕,这样屏幕看起来就暗了,然后我可以将矩形渲染到屏幕上,它们渲染到的地方变成完全透明的,这样你就可以直接看到这个矩形了。我已经使屏幕部分填充为黑色,但当我在上面画一个矩形时,我无法使其透明。我从未使用过AlphaComposites,但我认为我必须使用其中一种来实现这一点。有人知道我该怎么做吗


私用色暗颜色=新颜色(0,0,0128),闪光灯颜色=新颜色(255255128);
公共空间渲染(图形g){
//绘制屏幕的黑暗部分。
图形2d g2=(图形2d)g;
g2.setColor(深色);
g2.fillRect(0,0,handler.getWidth(),handler.getHeight());
g2.设置颜色(闪光灯颜色);
g2.setComposite(AlphaComposite.DstOut);
g2.fillRect(200200300200);
g2.dispose();
}
无法“取消绘制”已绘制的矩形;如果您已经在矩形后面的场景上进行了绘制,那么它就消失了。解决方法是只在你想要的地方画黑色的形状;这意味着它不仅仅是一个矩形,但如果要“剪切”的零件是一个矩形,则可以通过绘制四个黑色矩形来实现所需效果,如下所示:


希望计算这四个矩形的坐标很简单。

不清楚你在问什么;您是否试图绘制一个矩形,然后在另一个矩形与之重叠时“取消绘制”其中的一部分?这是不可能的,但如果你只是想让另一个矩形“通过”它可见,那么为什么不在之后绘制该矩形,以便它绘制在半透明矩形的顶部呢?你说的第一件事是我在游戏中寻找手电筒。所以默认情况下,整个屏幕是半透明的,但是无论玩家的手电筒应该在哪里,我都会在那里画一个形状,这样那些半透明的黑色像素就会消失,你可以清楚地看到这个地方的世界。