具有每像素透明度的缓冲策略

时间:2013-12-05 23:48:17

标签: java swing awt rendering graphics2d

查看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));

我失去了绘制透明像素的能力,(完全透明的背景)。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

如果你在谈论java.awt.Canvas,那么,这可能是你的问题。您不应该将Canvas与Swing应用程序混合使用(尽管我们在Swing应用程序中使用的awt中仍然存在一些组件,例如事件)。

如果使用菜单栏而不是JPanel创建JFrame,则使用Canvas作为中间组件,当您单击菜单时,菜单将在“画布”下呈现,您无法看到菜单项。因此,由于Canvas不支持此功能,您可能遇到此问题。