2011-08-25 86 views
0

我想在Android的ImageView上显示Canvas内容,Canvas在Android中的ImageView问题

但ImageView显示空白。

Bitmap imgBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.image); 
Canvas canvas = new Canvas(); 
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); 

canvas.drawBitmap(imgBitmap, 0, 0, paint); 

paint.setColor(Color.BLACK); 
paint.setAlpha(100); 
canvas.drawRect(0, 0, 100, 100, paint); // transparent black on image 

imgView.draw(canvas); 

是什么问题?我该怎么办?

回答

5

当调用ImageView.draw()时,它实际上将ImageView的内容放入提供的画布中,因此在此处将它逻辑上向后。取而代之的是使用Canvas(Bitmap)构造函数(因此您的画布将绘制到位图),然后使用ImageView.setImageBitmap()给画布赋予相同的位图。您可以使用Bitmap.createBitmap(int, int, Bitmap.Config)来创建所需的位图大小。并记住,如果您将画布绘制在位图边界之外,则会将其裁剪掉。

+2

感谢您的回答。 '位图位图= Bitmap.createBitmap(宽度,高度,Bimap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); ... imgView.setImageBitmap(bitmap);' – musa