在我的自定义 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/