我正在尝试设置一个png图像来填充画布的背景,同时仍保持其宽高比。我首先将其转换为Bitmap:然后使用Canvas类中的setBitmap方法设置背景:
http://developer.android.com/reference/android/graphics/Canvas.html#Canvas(android.graphics.Bitmap)
public class PlayOn extends View{
Bitmap board;
public PlayOn(Context gamecontext) {
super(gamecontext);
board=BitmapFactory.decodeResource(getResources(),R.drawable.board_rev1);
}
@Override
protected void onDraw(Canvas mycanvas) {
super.onDraw(mycanvas);
mycanvas.setBitmap(board);
}
}
但是一旦我转到调用此扩展View类的Activity,我会收到错误消息,说我的应用程序意外停止了。 我也尝试过使用Canvas和Bitmap类中的其他一些函数,但似乎没什么用。
请问最好的方法是什么?我在Android开发者网站上看到,有一种方法可以设置一个图像,这样它就是画布,然后可以在其中绘制其他图像,但我无法弄清楚如何做到这一点。
谢谢!
答案 0 :(得分:2)
您可能需要添加一个Log.d来检查从
返回的板位图BitmapFactory.decodeResource(getResources(),R.drawable.board_rev1);
不为空。但我使用以下内容在几个应用程序中的onDraw中绘制位图到全屏视图,所以如果位图非空,那应该可以正常工作。
canvas.drawBitmap(mBitmap, 0, 0, null);
还有一个缩放版的drawBitmap,即
void canvas.drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint)
Draw the specified bitmap, scaling/translating automatically to fill the
destination rectangle.
您可能想尝试一下吗?