1

我正在尝试绘制位图,以便可以将自定义视图放在 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);

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

如果我注释掉该行

canvas.setBitmap(drawGraph);

然后一切正常,所以这是问题,但我不知道为什么。

我哪里错了?

4

3 回答 3

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);
于 2011-07-26T13:12:53.167 回答
1

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

于 2011-07-26T11:20:27.013 回答
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());
    }
}
于 2020-09-27T15:28:00.410 回答