小编典典

AlphaComposite.CLEAR无法正常工作

java

我在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是由多条线构成的形状。现在,不是在先前的图形上绘制 透明线 ,而是绘制 黑线 。我要去哪里错了?


阅读 216

收藏
2020-11-30

共1个答案

小编典典

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

2020-11-30