12

我想用绘制的位图来缩放画布。我可以缩放画布,但画在上面的位图分别移动到左上角和右下角。

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

    //draw bitmap
}

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

提前致谢

4

2 回答 2

17

就像您提到的那样,枢轴点是执行此操作的正确方法:

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

将工作。无需额外翻译。

于 2012-08-07T22:07:37.570 回答
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);

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

于 2020-12-30T12:12:55.280 回答