我有一个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
答案 0 :(得分:1)
因为您创建了一个新的。传入画布是指向屏幕的画布(或者更准确地说,指向将被绘制到屏幕的图形卡中的缓冲区)。您创建的那个绘制到您在创建位图函数中创建的新的内存中位图,并将绘制到该位图,而不是屏幕。