Android 自动缩放画布以适应位图
在我的自定义视图Android 自动缩放画布以适应位图,android,canvas,Android,Canvas,在我的自定义视图OnDraw方法中,我使用 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
OnDraw
方法中,我使用
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);
}
}
如果
位图
的高度或宽度大于画布
的大小(displayWidth,displayHeight
),如何使用Camera
类自动缩放以适应位图
并将其居中放置在画布
上。有什么想法吗?尝试创建一个矩阵实例,并使用
public boolean setRectToRect(RectF src、RectF dst、Matrix.ScaleToFit stf)
您只需执行一次,并将矩阵保存在内存中。请注意,Matrix.ScaleToFit
定义CENTER
值
稍后绘制位图时,请使用此版本的drawBitmap:
public void drawBitmap(位图、矩阵、油漆)