2

我曾经canvas.drawbitmap(bitmap,matrix,paint)在画布上绘制位图。是的,它大部分时间都有效!但有时它不起作用。调用该方法后画布上没有任何内容canvas.drawbitmap(); 那么,出了什么问题?

1:我从相册中选择了一张图片,得到了名为的位图bgBitmap

2:创建了一个CanvasViewwhich extends View。然后在画布上创建一个空位图,在其上绘制一些东西。

mBitmap = Bitmap.createBitmap(screenWidth, screenHeight,Bitmap.Config.RGB_565);
mCanvas = new Canvas(mBitmap);  
mCanvas.drawColor(Color.WHITE);

protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    canvas.drawColor(getResources().getColor(R.color.color_white));
    canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);   
}

3:在画布上绘制图片。

mCanvas.drawBitmap(bgBitmap,matrix, bitmapPaint);
this.invalidate();

它在大多数时间都有效,但有时它不起作用。

4

2 回答 2

0

1:我从相册中选择了一张图片,得到了名为bgBitmap的Bitmap;

2:创建了一个扩展 View 的 CanvasView。然后,在画布上创建一个空位图,在其上绘制一些东西。

 mBitmap = Bitmap.createBitmap(screenWidth, screenHeight,Bitmap.Config.RGB_565);
 mCanvas = new Canvas(mBitmap);  
 mCanvas.drawColor(Color.WHITE);

protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    canvas.drawColor(getResources().getColor(R.color.color_white));
    canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);   
}

3:在画布上绘制图片。

 mCanvas.drawBitmap(bgBitmap,matrix, bitmapPaint);
 this.invalidate();

它大部分时间都在工作,但有时它不起作用。

于 2016-10-08T03:59:58.493 回答
0

我有一个类似的问题......起初“canvas.drawBitmap()”工作,但后来它停止工作,这取决于我试图显示的位图。我正在处理照片。我将一张 24Mb 的全景照片缩小到大约 400K,但即使这样也太大了。当我进一步减小 jpeg 大小时(降低分辨率 - 不降低颜色质量),它开始可靠地工作。

于 2018-04-12T05:45:34.513 回答