gpt4 book ai didi

Android ImageView 矩阵缩放+翻译

转载 作者:IT老高 更新时间:2023-10-28 21:50:30 27 4
gpt4 key购买 nike

我正在尝试手动获取 ImageView 中的图像,使其居中并适合屏幕。我需要用矩阵来做(我稍后会动态改变矩阵变换)。

问题是我无法让图像在 View 中居中(比例合适)。代码如下:

// Compute the scale to choose (this works)
float scaleX = (float) displayWidth / (float) imageWidth;
float scaleY = (float) displayHeight / (float) imageHeight;
float minScale = Math.min(scaleX, scaleY);

// tx, ty should be the translation to take the image back to the screen center
float tx = Math.max(0,
0.5f * ((float) displayWidth - (minScale * imageWidth)));
float ty = Math.max(0,
0.5f * ((float) displayHeight - (minScale * imageHeight)));

// Compute the matrix
Matrix m = new Matrix();
m.reset();

// Middle of the image should be the scale pivot
m.postScale(minScale, imageWidth/2, imageHeight/2);

// Translate
m.postTranslate(tx, ty);

imageView.setImageMatrix(m);

如果我不将比例居中放在图像中心,上面的代码就可以工作(但我稍后需要这样做,所以我现在需要弄清楚公式)。

我认为执行以下操作可以解决问题,但图像仍然偏移(朝向底部和右侧)。

tx += 0.5*imageWidth*minScale;
ty += 0.5*imageHeight*minScale;

我有一些值(value)观:- 图像:200x133- 显示:800x480- minScale:2.4- 图片的最后一个左上角:100, 67(应该是 17, 0)

最佳答案

有一个方便的方法叫做 Matrix.setRectToRect(RectF, RectF, ScaleToFit)在这里为您提供帮助。

Matrix m = imageView.getImageMatrix();
RectF drawableRect = new RectF(0, 0, imageWidth, imageHeight);
RectF viewRect = new RectF(0, 0, imageView.getWidth(), imageView.getHeight());
m.setRectToRect(drawableRect, viewRect, Matrix.ScaleToFit.CENTER);
imageView.setImageMatrix(m);

这应该将矩阵 m 设置为具有缩放和转换值的组合,以显示可绘制居中并适合 ImageView 小部件。

关于Android ImageView 矩阵缩放+翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6075363/

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