2011-08-28 99 views
3

我创建了自定义视图,并试图在其上绘制一个整数(颜色)数组。Android:无法在视图上绘制位图对象

这画一个红色的屏幕:

@Override 
protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 

    int width = canvas.getWidth(); 
    int height = canvas.getHeight(); 

    int[] pixels = new int[width*height]; 
    for(int i=0; i<pixels.length; i++) { 
     pixels[i] = 0xFF0000; 
    } 

    canvas.drawBitmap(pixels, 0, width, 0,0,width,height,false,null); 
} 

这不:

@Override 
protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 

    int width = canvas.getWidth(); 
    int height = canvas.getHeight(); 

    int[] pixels = new int[width*height]; 
    for(int i=0; i<pixels.length; i++) { 
     pixels[i] = 0xFF0000; 
    } 

    Bitmap bmp = Bitmap.createBitmap(pixels, width, height, Bitmap.Config.ARGB_8888); 
    canvas.drawBitmap(bmp, 0, 0, null); 
} 

所不同的是在那些最后一行(S)。第二种做事方式有什么问题?我以某种方式错误地创建了Bitmap对象?

回答

1

在第二个示例中,尝试将pixels[i] = 0xFF0000;更改为pixels[i] = 0xFFFF0000;您正在创建带有Alpha通道的位图,因此您必须指定AARRGGBB格式的颜色才能正确解释它们。

+0

啊,就是这样。我没有考虑这个alpha值,因为显然当使用第一种方法时,我只是将'false'传递给hasAlpha参数,并没有问题。 – Ricket