Android Canvas.scale()和非整数

Android Canvas.scale()和非整数,android,android-canvas,Android,Android Canvas,我正在画布上缩放一些位图,我遇到了一些问题。 我有这张640x360的图片,想把它填充到屏幕上。 我的屏幕是1196x720px,因此我必须将图像缩放1.86875 x 2.0倍 代码如下: canvas.save(Canvas.MATRIX_SAVE_FLAG); canvas.scale((float)(1.86875), (float)(2.0),0,0); canvas.drawBitmap(this.backgroundMap, 0, 0, null); canvas.restore(

我正在画布上缩放一些位图,我遇到了一些问题。 我有这张640x360的图片,想把它填充到屏幕上。 我的屏幕是1196x720px,因此我必须将图像缩放1.86875 x 2.0倍

代码如下:

canvas.save(Canvas.MATRIX_SAVE_FLAG);
canvas.scale((float)(1.86875), (float)(2.0),0,0);
canvas.drawBitmap(this.backgroundMap, 0, 0, null);
canvas.restore();
图像在Y轴上缩放正确,但在X轴上缩放100像素是错误的。 你知道我该怎么解决这个问题吗


谢谢=)

不要使用缩放和绘制位图,请尝试使用以下方法:

canvas.drawBitmap(bitmap, src, dst, paint);
您可能应该这样称呼它:

canvas.drawBitmap(this.backgroundMap, null, new Rect(0, 0, 1196, 720), null);

你说“错了”是什么意思?它是扭曲的,是在屏幕的错误位置吗?它不是1196x720px的宽度:-(谢谢,这是可行的。但这仍然很奇怪。我正在画布上开发一个游戏(是的,我知道,我应该使用opengles,但我开始这个项目就像一个爱好).对于背景,这种方式是完美的,因为图像每次都与宽度和高度相同,但对于其他资产,尺寸每次都会变化。我希望比例更可靠:-(