Android:canvas.drawBitmap和BitmapDrawable.draw之间的区别?

时间:2011-07-13 15:08:16

标签: android bitmap drawable

当我想在Android中的Canvas中绘制BitmapDrawable时,有两种可能做同样的事情,我不知道更喜欢哪一种:

  1. 使用canvas.drawBitmap()并使用getBitmap()从drawable中提取位图

  2. 使用drawable.draw(canvas),将画布作为参数传递给drawable。

  3. 我现在正在使用第一个选项,但它似乎完全随意,因为我看不出任何差异。

    感谢您的回答

1 个答案:

答案 0 :(得分:10)

永远不要像你那样做第1号选项。不是每次想要绘制时都使用drawable创建位图,而是首先创建一个位图。也就是说,如果要绘制位图,请不要创建Drawable。像这样创建一个位图:

mBitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.myImage);
mBitmap = Bitmap.createScaledBitmap(mBitmap, width, height, true);

这就是你曾经做过的事情。之后,就像你一样画画(canvas.drawbitmap())。

对于选项编号2,您正确地执行此操作。

现在,存在一些差异。 选项1绘制速度更快,通常适用于背景图像。根据您是否绘制位图或可绘制,FPS会发生重大变化。位图更快。

如果您需要缩放,移动和其他类型的图像处理,选项2是可行的方法。没有那么快,但如果你想做上面提到的任何事情,别无选择。

希望这有帮助!