我正在尝试在ImageViewTouch上进行绘制,这是一个可以缩放的库。我能够使用Canvas在图像上绘制,但是当我缩放图像时,绘图会消失。
为了解决这个问题,我正在尝试将视图转换为位图,并为相同的视图设置ImageBitmap。以下是代码:
mImage.setDrawPath(true);
mImage.setImageBitmap(loadBitmapFromView(mImage));
public static Bitmap loadBitmapFromView(View v) {
Bitmap b = Bitmap.createBitmap( v.getWidth(), v.getHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
v.layout(0, 0, v.getWidth(), v.getHeight());
v.draw(c);
return b;
}
我这样做时,会得到以下日志错误:
07-11 21:13:41.567: E/AndroidRuntime(20056): java.lang.IllegalArgumentException: width and height must be > 0
07-11 21:13:41.567: E/AndroidRuntime(20056): at android.graphics.Bitmap.createBitmap(Bitmap.java:638)
07-11 21:13:41.567: E/AndroidRuntime(20056): at android.graphics.Bitmap.createBitmap(Bitmap.java:620)
如果我删除loadBitmapFromView
调用,绘画通常会出现在图像上。但是当我尝试对图像进行任何交互(比如缩放)时,绘画就消失了,只剩下背景图像。
--- 编辑 ---
以下是在loadBitmapFromView
调用之后添加的一些代码。情况是:我有一个单选按钮组侦听器,当我选中某个单选按钮时,我必须加载图片并在其上绘制一些可能的图画...然后我试图将所有东西(图片和图画)转换为一个位图。
以下是代码的其他部分:
bitmap = BitmapUtils.decodeSampledBitmapFromResource(root + DefinesAndroid.CAMINHO_SHOPPINGS_SDCARD + nomeImagemAtual, size.x, size.y);
mImage.setImageBitmap(bitmap);
之后,我画出所有需要画的东西,并尝试使用我展示过的loadImageBitmap方法将视图转换为位图。
我从android开发者官网这个链接中获得了decodeSampledBitmapFromResource方法:http://developer.android.com/training/displaying-bitmaps/load-bitmap.html