我得到了位图,将其用作着色器平铺模式。

除了要绘制的形状轮廓外,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/

10-12 02:03