gpt4 book ai didi

java - 在 Canvas 上绘制一个缩放的位图?

转载 作者:IT老高 更新时间:2023-10-28 23:40:05 35 4
gpt4 key购买 nike

以下代码定义了我的位图:

Resources res = context.getResources();

mBackground = BitmapFactory.decodeResource(res, R.drawable.background);

// scale bitmap
int h = 800; // height in pixels
int w = 480; // width in pixels
// Make sure w and h are in the correct order
Bitmap scaled = Bitmap.createScaledBitmap(mBackground, w, h, true);

...下面的代码用于执行/绘制它(未缩放的位图):

canvas.drawBitmap(mBackground, 0, 0, null);

我的问题是,我如何设置它以绘制以Bitmap scaled形式返回的缩放位图,而不是原始?

最佳答案

定义一个新的类成员变量:位图 mScaledBackground;然后,将新创建的缩放位图分配给它:mScaledBackground = scaled;然后,调用你的 draw 方法:canvas.drawBitmap(mScaledBackground, 0, 0, null);

请注意,以您在上面的代码段中所做的方式对屏幕大小进行硬编码并不是一个好主意。最好通过以下方式获取您的设备屏幕尺寸:

int width = getWindowManager().getDefaultDisplay().getWidth();
int height = getWindowManager().getDefaultDisplay().getHeight();

最好不要仅仅为了以缩放方式绘制原始背景而声明新位图。位图会消耗大量宝贵资源,而且通常一部手机仅限于几 MB 的位图,您可以在应用程序出现异常失败之前加载这些位图。相反,您可以这样做:

Rect src = new Rect(0, 0, bitmap.getWidth() - 1, bitmap.getHeight() - 1);
Rect dest = new Rect(0, 0, width - 1, height - 1);
canvas.drawBitmap(mBackground, src, dest, null);

关于java - 在 Canvas 上绘制一个缩放的位图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10407089/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com