Android,Java:Bitmap.eraseColor删除整个图形

时间:2013-10-05 01:51:30

标签: java android

我正在学习如何使用琐碎的任务开始制作Android应用程序,例如在屏幕上绘制图形,但当我删除背景颜色(白色)时,它会删除整个图形并使其完全变白。

我的代码是:

public Sprite(int xx, int yy, InputStream is, boolean d){
        x = xx;
        y = yy;
        Bitmap old = BitmapFactory.decodeStream(is);
        b = old.copy(old.getConfig(), true);
        b.eraseColor(Color.WHITE);
        draw = d;
        old.recycle();
        RenderView.addSprite(this);
    }

在我绘制图像的地方,代码是:

@Override
    protected void onDraw(Canvas canvas){
        canvas.drawRGB(0,0,0);
        for (Sprite spr : sprites){
            if (spr.getDraw()){
                canvas.drawBitmap(spr.getBitmap(), spr.getX(), spr.getY(), null);
            }
        }
        invalidate();
    }

this is the debug graphic I'm using

我在Android上看到的只是预期的黑屏和白盒子(我的问题)

我错过了什么吗?或做错了什么?

2 个答案:

答案 0 :(得分:0)

如果您正在尝试绘制具有alpha的位图,则需要使用带alpha的绘图:

Paint paint = new Paint();
paint.setAlpha(100);
canvas.drawBitmap(spr.getBitmap(), spr.getX(), spr.getY(), paint);

希望这会有所帮助:)

答案 1 :(得分:0)

查看文档:

http://developer.android.com/reference/android/graphics/Bitmap.html#eraseColor(int)

  

public void eraseColor(int c)使用填充位图的像素   指定的颜色。

使用Bitmap.setPixels或Bitmap.setPixel替换像素的颜色。是的,这意味着你必须编写一个迭代位图上每个像素或像素块的方法,并检查是否要用WHITE替换它。