gpt4 book ai didi

android - 自动缩放 Canvas 以适合位图

转载 作者:太空狗 更新时间:2023-10-29 15:20:34 24 4
gpt4 key购买 nike

在我的自定义 View OnDraw 方法中,我使用

Bitmap 绘制到 Canvas 的中心
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Rect r = canvas.getClipBounds();
displayWidth = r.right;
displayHeight = r.bottom;
camera.applyToCanvas(canvas);
float zW = (float)bitmapWidth / (float)displayWidth;
float zH = (float)bitmapHeight / (float)displayHeight;
float z = 0.0f;
if (zW>1 || zH>1) {
z = Math.max(zW, zH);
}
canvas.drawColor(Color.DKGRAY);
canvas.drawBitmap(bitmap, (displayWidth/2.0f - (bitmapWidth)/2.0f), (displayHeight/2.0f - bitmapHeight/2.0f), paint);
if (z>0) {
camera.translate(z, -z, z);
}
}

如果 Bitmap 的高度或宽度大于 Canvas 尺寸(displayWidth, displayHeight),我该如何使用 Camera 类自动缩放以适应 Bitmap 并将其置于 Canvas 中心。有什么想法吗?

最佳答案

尝试创建一个 Matrix 实例并使用

对其进行初始化

public boolean setRectToRect (RectF src, RectF dst, Matrix.ScaleToFit stf)

您只需执行一次并将矩阵保存在内存中。请注意,Matrix.ScaleToFit 定义了 CENTER 值。

稍后当您绘制位图时使用此版本的 drawBitmap:

public void drawBitmap(Bitmap位图,Matrix矩阵,Paint画图)

关于android - 自动缩放 Canvas 以适合位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8206312/

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