在画布中绘制可绘制对象无法正常工作。

6
我希望使用这段代码在画布上绘制可绘制对象,但它不起作用,我不知道为什么。
getResources().getDrawable(R.drawable.allergist).draw(canvas);

我将我的自定义视图的高度和宽度设置为与父级匹配,但整个屏幕都是白色的,屏幕上没有可绘制的内容。

5
您没有设置 Drawable 的边界。 - pskink
谢谢,问题已解决 @pskink - Amir_P
2个回答

6
您需要将您的图像加载为位图:
 Resources res = getResources();
 Bitmap bitmap = BitmapFactory.decodeResource(res, R.drawable.allergist);

然后将位图设置为可变的(mutable)并在其上创建画布:
Canvas canvas = new Canvas(bitmap.copy(Bitmap.Config.ARGB_8888, true));

然后你可以在画布上绘制它。

编辑1

将边界设置为Drawable

Drawable d = getResources().getDrawable(R.drawable.allergist);
d.setBounds(left, top, right, bottom);
d.draw(canvas);

1
但是我有一个使用drawable.draw()的示例项目,它可以正常工作。 - Amir_P
那么问题可能出在你正在使用的“Drawable图像”上。请检查一下。 - Jay Rathod
@jaydroider谁说R.drawable.allergist指向一个png / jpg图像的? - pskink
@Amir_P 你可以检查一下,我已经编辑了答案来设置边界。 - Jay Rathod
是的,@pskink先生,它可能是任何东西,如png / jpg - Jay Rathod

0
我们曾经遇到过类似的问题,解决方法是调用drawable.invalidateSelf()。之后,它成功地渲染在我们的画布上。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接