AlphaComposite.CLEAR无法正常工作

时间:2013-07-01 22:55:08

标签: java awt alpha-transparency

我在JLayeredpane上有两个JPanel。其中一个显示pdf,重叠的一个有透明背景(我使用了setOpaque(false))。 现在我可以将图纸添加到透明面板,这样我似乎实际上是在注释pdf。我想要一个橡皮擦工具来删除这些注释。我尝试使用以下代码

@Override
public void draw(Graphics2D g2) {
    g2.setPaint(Color.WHITE);
    g2.setComposite(AlphaComposite.getInstance(AlphaComposite.CLEAR));
    g2.setBackground(new Color(255, 255, 255, 0));
    g2.setStroke(new BasicStroke(thickness, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
    g2.draw(path);
}

其中path是由多行组成的形状。现在,不是在之前的图纸上绘制透明线,而是绘制一条黑线。我哪里错了?

1 个答案:

答案 0 :(得分:2)

请注意,AlphaComposite.CLEAR的实例(相当于AlphaComposite.Clear)是一种复合模式,用于清除目标的颜色和alpha。 “源和目的地都不用作输入。”实际上,您无法使用CLEAR 绘制。此example说明了常见用法。要获得所需的效果,请在鼠标移动时保留未更改的图像副本和draw()目标BufferedImage上的橡皮大小的子图像。