2012-11-20 37 views
1

我得到我的位图,将其用作着色器拼贴模式。带有alpha通道的位图着色器。 (Alpha正在绘制黑色..?)

PNG除了绘制轮廓外,大部分都是阿尔法。

除绘制轮廓,但被黑色包围,而不是(aeth)。

pnt.reset(); 

    if(backgroundColor == 1) 
    { 
      pnt.setColor(myColor); 
      pnt.setStyle(Paint.Style.FILL); 

    } 

    m_canvas.drawPath(path, pnt); 

//fillBMP = getBitmapFromAsset(m_context, "brush.png"); 
    fillBMP = BitmapFactory.decodeFile(mySDPath + "brush.png"); 
fillBMPshader = new BitmapShader(fillBMP, Shader.TileMode.REPEAT, Shader.TileMode.REPEAT); 

pnt.setShader(fillBMPshader); 

m_canvas.drawPath(path, pnt); 

左侧画笔下方的示例。但结果是正确的。

enter image description here

+0

ü可以添加'getBitmapFromAsset'方法? – Ronnie

+0

@ userSeven7s与文件相同。请参阅编辑以反映。我还为ARGB_8888模式添加了选项(这是默认设置),只是为了确保。 – Doomsknight

回答

2

您应该将Paint对象上设置XferMode。更具体地说,你必须使用PorterDuffXferMode MULTIPLY。

这里有一个类似的问题:Android color overlay - PorterDuff modes

+0

不要假设你有一个例子和/或解释吗? :) – Doomsknight

+0

似乎已经完成了这个诀窍,但现在在每个画布上绘制白色和清晰之间交替。尽管如此,我认为这是一个单独的问题。 – Doomsknight

+0

这不是一个好的解决方案。它有非常糟糕的效果。看看http://softwyer.files.wordpress.com/2012/01/porterduffmodes.png,我想要的是'SrcOver',这是默认的。它只是没有考虑阿尔法..用一个简单的游戏绘图循环。它只是白色而不是阿尔法。 – Doomsknight

相关问题