查看this我认为我理解每像素透明度,但是当用Canvas替换JPanel,然后用缓冲策略替换渲染方法时,我无法获得每像素透明度。
window.setBackground(new java.awt.Color(0, 0, 0, 0));
与
结合使用canvas.setBackground(new java.awt.Color(0, 0, 0, 0));
使用标准覆盖绘画方法时,就像魅力一样。但是当使用更理想的缓冲策略时:
....
Graphics2D g = null;
try {
g = (Graphics2D) strategy.getDrawGraphics();
renderer.render(this, g, getWidth(), getHeight());
} finally {
g.dispose();
}
strategy.show();
....
我需要发表评论
window.setBackground(new java.awt.Color(0, 0, 0, 0));
我失去了绘制透明像素的能力,(完全透明的背景)。
我在这里缺少什么?
答案 0 :(得分:0)
如果你在谈论java.awt.Canvas,那么,这可能是你的问题。您不应该将Canvas与Swing应用程序混合使用(尽管我们在Swing应用程序中使用的awt中仍然存在一些组件,例如事件)。
如果使用菜单栏而不是JPanel创建JFrame,则使用Canvas作为中间组件,当您单击菜单时,菜单将在“画布”下呈现,您无法看到菜单项。因此,由于Canvas不支持此功能,您可能遇到此问题。