代码之家  ›  专栏  ›  技术社区  ›  Bill K

在awt中绘制半透明.png

  •  2
  • Bill K  · 技术社区  · 16 年前

    我正在尝试在电视信号上绘制一个透明的.png图像(因此渲染前的混合有点过时)。

    当我画一个透明矩形时,我可以设置srcover并为背景色指定一个alpha,它会起作用:

    ((DVBGraphics) g).setDVBComposite(DVBAlphaComposite.SrcOver);
    

    但现在我正尝试使用一个具有透明度集的PNG,但这不起作用(它只是固体)。

    如果我设置XOR模式:

    g.setXORMode(Color.white);
    

    设置srcover后,整个图像变为半透明,而不仅仅是指定的点。此外,设置为“透明”的零件仍然可见。

    有人能给我指一下这套神奇的电话吗?

    (此外,Swing还不可用,只是Java 1.4的大部分)。

    1 回复  |  直到 16 年前
        1
  •  0
  •   L. Cornelius Dol    16 年前

    我只能建议你重新检查所有东西;我以前用awt绘制过PNG图像,效果很好,只是做了明显的:

    private final Image                     image;                                  //
    
    protected void paintForeground(Graphics2D gc, int wid, int hgt) {
        ...
        gc.drawImage(image,dx,dy,(dx+width),(dy+height),0,0,width,height,null);
        ...
        }
    

    除了在J2ME 1.1平台上之外,它还具有图像透明度。

    绘制模式是普通绘制,而不是XOR。