如何设置图像以填充画布

Posted

技术标签:

【中文标题】如何设置图像以填充画布【英文标题】:How to set an image to fill a canvas 【发布时间】:2011-05-04 22:55:07 【问题描述】:

我正在尝试设置一个 png 图像来填充画布的背景,同时仍保持其纵横比。我首先将其转换为位图:然后使用 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);



但是,一旦我转到调用此扩展视图类的 Activity,我就会收到一条错误消息,指出我的应用程序意外停止。 我也尝试过使用 Canvas 和 Bitmap 类中的其他一些函数,但似乎没有任何效果。

请问最好的方法是什么?我在 android 开发者网站上读到有一种方法可以设置图像,使其成为画布,然后可以在其中绘制其他图像,但我无法弄清楚如何做到这一点。

谢谢!

【问题讨论】:

发布应用程序崩溃时的日志信息。 【参考方案1】:

您可能需要添加一个 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.

你可能想试试?

【讨论】:

以上是关于如何设置图像以填充画布的主要内容,如果未能解决你的问题,请参考以下文章

重新填充画布擦除区域的区域

如何从图像画布中裁剪颜色部分?

使用 Canvas 为填充圆设置动画

未指定暗淡时图像未填充画布[重复]

如何以 100% 的页面宽度打印画布图像?

如何自动下载画布图像?