我在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是由多行组成的形状。现在,不是在之前的图纸上绘制透明线,而是绘制一条黑线。我哪里错了?
答案 0 :(得分:2)
请注意,AlphaComposite.CLEAR
的实例(相当于AlphaComposite.Clear
)是一种复合模式,用于清除目标的颜色和alpha。 “源和目的地都不用作输入。”实际上,您无法使用CLEAR
绘制。此example说明了常见用法。要获得所需的效果,请在鼠标移动时保留未更改的图像副本和draw()
目标BufferedImage
上的橡皮大小的子图像。