我在JLayeredpane上有两个JPanels。其中一个显示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是由多条线构成的形状。现在,不是在先前的图形上绘制 透明线 ,而是绘制 黑线 。我要去哪里错了?
请注意,与AlphaComposite.CLEAR等效的实例AlphaComposite.Clear是一种复合模式,可以同时清除目标的颜色和Alpha。“源和目的地都不用作输入。”实际上,你不能 画 用CLEAR。本示例说明了一种常见用法。要获得所需的效果,请在鼠标移动时将未更改的图像副本和draw()橡皮擦大小的子图像保留在目标上BufferedImage。
AlphaComposite.CLEAR
AlphaComposite.Clear
CLEAR
draw()
BufferedImage