我有一个 View 派生类,我在 onDraw
中直接在 Canvas 上绘制 790x500(是的,这很奇怪,但必须保持这种状态)位图。这在我的 Nexus S 上看起来不错,但是当我在屏幕较小的设备(例如 Wildfire)上运行我的应用程序时,我只能看到位图的左上部分。我在这里缺少什么?
这是一个类似游戏的应用程序,我可以在其中在特定坐标上绘制许多位图。我真的不想为 LDPI、MDPI 和 HDPI 设置不同的像素(我有一个很好的理由)。
问:如何针对任何屏幕分辨率正确缩放位图? (对于大屏幕,将游戏屏幕居中可能是一种选择,但不是必须的。)例如当我在 320x240 屏幕上绘制 800x600 图像时,图像会自动拉伸(stretch),当我以 100x100 输出一个像素时,它会变成 40x40。
最佳答案
drawbitmap() 方法有多种形式。选择允许您指定源矩形和目标矩形的那个。源矩形将是位图的大小,目标矩形将按比例缩放以适合设备显示。 Android 会在绘制时缩放您的位图。
Rect rs = new Rect();
Rect rd = new Rect();
rs.left = rs.top = 0;
rs.right = 789;
rs.bottom = 499;
<calculate destination rectangle from device size>
canvas.drawBitmap(myBitmap, rs, rd, null);
您还可以缩放和平移(移动)整个 Canvas
canvas.scale(float scaleX, float scaleY);
canvas.translate(float dx, float dy);
关于android - 如何在 Android 的 View.Canvas 上缩放位图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9144213/