0

我在 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);
}

其中路径是由多条线构成的形状。现在不是在早期的图纸上画一条透明线,而是画一条黑线。我哪里错了?

4

1 回答 1

2

请注意AlphaComposite.CLEAR,等效于的 的实例AlphaComposite.Clear是一种复合模式,可同时清除目标的颜色和 alpha。“源和目标都没有用作输入。” 实际上,您不能使用CLEAR. 这个例子说明了一个常见的用法。要获得您想要的效果,请在鼠标移动时保留未更改图像的副本和draw()橡皮擦大小的子图像。BufferedImage

于 2013-07-01T23:32:16.033 回答