替换onDraw中的当前画布

时间:2014-12-20 21:40:12

标签: android canvas surfaceview ondraw

我有一个surfaceView,在onDraw函数中我尝试通过创建一个新的canvasBitMap来更改当前画布:

Bitmap.Config conf = Bitmap.Config.ARGB_8888;
canvasBitmap = Bitmap.createBitmap((int) canvas.getWidth(), (int) canvas.getHeight(), conf); 
canvas = new Canvas(canvasBitmap);
Temp temp = new Temp(canvas);

然后我尝试打印画布ID以查看temp.getCanvas是否与canvas相同:

Log.d("Debug", "Canvas: " + canvas);
Log.d("Debug", "Temp Canvas: " + Temp.getCanvas());

打印输出的结果是:

Canvas: android.view.GLES20RecordingCanvas@34cbdc63 
Temp Canvas: android.graphics.Canvas@276f78f4

问题很简单,为什么他们不一样?

BR

1 个答案:

答案 0 :(得分:1)

因为您创建了一个新的。传入画布是指向屏幕的画布(或者更准确地说,指向将被绘制到屏幕的图形卡中的缓冲区)。您创建的那个绘制到您在创建位图函数中创建的新的内存中位图,并将绘制到该位图,而不是屏幕。