我得到了位图,将其用作着色器平铺模式。
除了要绘制的形状轮廓外,PNG主要是alpha。
除了绘制轮廓外,它被黑色包围,而不是透明(alpha)。
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);
下面是左侧画笔的示例。但是结果是正确的。
最佳答案
您应该在XferMode
对象上设置Paint
。更具体地说,您必须使用PorterDuffXferMode MULTIPLY。
这是一个类似的问题:Android color overlay - PorterDuff modes
关于android - 具有Alpha channel 的位图着色器。 (Alpha正在绘制黑色..?),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13473471/