java - 如何使 2 个相交的矩形变得透明
问题描述
我的目标是用一个 alpha 为 128 的黑色矩形填充屏幕,使屏幕看起来很暗,然后制作它,这样我就可以将矩形渲染到屏幕上,并且将它们渲染到的位置变为完全透明,这样你就可以直接看到矩形。我已经让屏幕被部分填充为黑色,但是当我在其上绘制一个矩形时,我无法让它变得透明。我从未使用过 AlphaComposites,但我认为我将不得不使用其中一个来完成这项工作。有谁知道我怎么能做到这一点?
private Color darknessColor = new Color(0,0,0,128), flashlightColor = new Color(255,255,255,128);
public void render(Graphics g) {
// Draws the darkness part of the screen.
Graphics2D g2 = (Graphics2D) g;
g2.setColor(darknessColor);
g2.fillRect(0, 0, handler.getWidth(), handler.getHeight());
g2.setColor(flashlightColor);
g2.setComposite(AlphaComposite.DstOut);
g2.fillRect(200, 200, 300, 200);
g2.dispose();
}
解决方案
推荐阅读
- java - 在 vscode 中启动 tomcat 时的 JVM 参数
- django - ModuleNotFoundError: No module named 'push_notifications' 卸载模块 django 推送通知后出现此错误
- javascript - 无法使用 Angular.js 从模式弹出窗口中获取输入数据
- android - API 'variantOutput.getProcessManifest()' 已过时
- sql - 在 hive 中运行 HQL 时抛出异常
- java - 导出的可运行 jar 不包含来自 eclipse 2018-12 和 java 11 的依赖 jar。我们如何解决这个问题?
- python - python - 有没有一种用引号格式化字符串的智能方法?
- sql-server - 删除约束时出现语法错误或访问冲突
- reactjs - 在 mapStateToProps 中未定义 Redux 状态找不到问题
- reactjs - 我试图在 reatctjs 中建立一个投资组合网站,但我不知道如何解决这些问题,