【发布时间】:2013-07-10 10:48:04
【问题描述】:
我正在尝试在 ImageViewTouch 上绘图,这是一个启用捏缩放的库。我可以使用 Canvas 在图像上绘图,但是当我缩放图像时,绘图消失了。
为此,我正在尝试将视图转换为位图并为同一视图设置 theImageBitmap。代码如下:
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开发者http://developer.android.com/training/displaying-bitmaps/load-bitmap.html这个链接得到的decodeSampledBitmapFromResource方法
【问题讨论】:
标签: java canvas view bitmap imageview