缩放画布并保持中心

时间:2012-08-07 21:27:21

标签: android canvas

我想缩放一个带有位图的画布。我可以缩放画布,但是在它上面绘制的位图分别向左下方移动。

@Override
protected void onDraw(Canvas canvas) {
    canvas.translate(mPosX, mPosY);
    canvas.scale(mScaleFactor, mScaleFactor);

    //draw bitmap
}

在过去的几天里,我尝试了许多不同的方法,从操纵平移坐标到枢轴点进行缩放。但没有什么对我有用。我很确定我的问题必须有一个简单的解决方案。

提前致谢

2 个答案:

答案 0 :(得分:14)

正如您所提到的,支点是正确的方法:

canvas.scale(2,2, redCircle.x, redCircle.y);

会奏效。无需额外翻译。

答案 1 :(得分:0)

var widthNew = ctx.canvas.width / 2;
var heightNew = ctx.canvas.height / 2;
ctx.setTransform(scale,0,0,scale,-(scale-1)*widthNew,-(scale-1)*heightNew);

这将帮助您通过水平和垂直平移水平和垂直缩放画布。