从onDraw()绘制到创建的位图

时间:2011-07-26 10:23:57

标签: android bitmap ondraw

我正在尝试绘制到Bitmap,因此我可以将自定义视图放在imageView中。onDraw方法中的代码是:

    public void onDraw(Canvas canvas) {     

    Bitmap drawGraph = Bitmap.createBitmap(canvas.getWidth(),canvas.getHeight(),Bitmap.Config.ARGB_8888);       
    canvas.setBitmap(drawGraph);    
    canvas.drawBitmap(drawGraph, 0, 0, bgPaint);

我的问题是,如果我尝试以这种方式使用Bitmap,我只会得到一个黑屏。我知道如果我不尝试绘制位图,我的其余代码就会显示。

如果我注释掉该行

canvas.setBitmap(drawGraph);

然后一切都很完美,所以这就是问题,但我不知道为什么。

我哪里错了?

3 个答案:

答案 0 :(得分:6)

原来我必须创建第二个画布。我的工作代码仅适用于可能需要它的人:

    public void onDraw(Canvas canvas) {

    Canvas singleUseCanvas = new Canvas();      

    drawGraph = Bitmap.createBitmap(canvas.getWidth(),canvas.getHeight(),Bitmap.Config.ARGB_8888);      
    singleUseCanvas.setBitmap(drawGraph);   

    canvas.drawBitmap(drawGraph, 100, 100, bgPaint);

答案 1 :(得分:1)

我认为是canvascanvas2二分法。尝试仅使用canvas2(参数)进行绘制。

答案 2 :(得分:0)

AFAIK最有效的方法是覆盖可绘制的设置器。

@Override
public void setImageBitmap(Bitmap bm) {
    bmp = bm;
}

@Override
public void setImageDrawable(Drawable drawable) {
    try {
        bmp = ((BitmapDrawable) drawable).getBitmap();
    } catch (Exception e){
        log(e.toString());
    }
}