Android:使用一些颜色在Canvas上绘制透明位图

时间:2012-05-01 10:55:38

标签: android android-canvas

它对我来说很头疼,我有一个透明的png图像,,,我已将其解码为位图,然后添加到画布上,

BitmapFactory.Options options = new BitmapFactory.Options();
Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), picList[0] , options);
Paint p = new Paint();      
canvas.drawBitmap(mBitmap, 0, 0, p);

稍后当我保存画布时,它显示图像但显示背景为黑色, 实现白色我使用了一些代码,如

Paint p = new Paint();
p.setAlpha(color.white);
p.setColor(color.white);
canvas.drawColor(color.white);
canvas.drawPaint(p);

但是颜色不是白色的,  请帮助我,我希望背景保存的图像是白色的。如果有任何其他逻辑我错过了。 thanx帮忙。

5 个答案:

答案 0 :(得分:2)

在绘制Canvas后,您可以在位图上调用以下内容:

        for(int x=0;x<bitmap.getWidth();x++){
            for(int y=0;y<bitmap.getHeight();y++){
                if(bitmap.getPixel(x, y)==Color.BLACK){
                    bitmap.setPixel(x, y, Color.WHITE);
                }
            }
        }

如果您想要保存图像的WHITE bg,请使用WHITE,否则您可以使用TRANSPARENT。

答案 1 :(得分:1)

我发现了正确的选择。 它的     canvas.drawARGB(255,30,30,39); 给出各种ARGB值并在画布上获得颜色 享受:D

答案 2 :(得分:0)

在创建Paint对象之前调用canvas.drawColor(color.white);如果这不起作用,请使用canvas.drawColor(Color.WHITE,PorterDuff.Mode.DARKEN);

答案 3 :(得分:0)

您可以尝试使用Color.TRANSPARENT代替Color.white ..

答案 4 :(得分:0)

好!

如果你的图像有白色不好(不是真的(255 255 255)),你可以考虑到公差

for(int x=0;x<img.getWidth();x++)
{
    for(int y=0;y<img.getHeight();y++)
    {
        int cou = img.getPixel(x, y), tolerancy = 40//max 255, your image would be completely tranpsparent;

        if(Math.abs(Color.red(cou)-255)<tolerancy && 
           Math.abs(Color.green(cou)-255)<tolerancy &&  
           Math.abs(Color.blue(cou)-255)<tolerancy)
            paletteFond.setPixel(x, y, Color.TRANSPARENT);
    }
}