我想缩放一个带有位图的画布。我可以缩放画布,但是在它上面绘制的位图分别向左下方移动。
@Override
protected void onDraw(Canvas canvas) {
canvas.translate(mPosX, mPosY);
canvas.scale(mScaleFactor, mScaleFactor);
//draw bitmap
}
在过去的几天里,我尝试了许多不同的方法,从操纵平移坐标到枢轴点进行缩放。但没有什么对我有用。我很确定我的问题必须有一个简单的解决方案。
提前致谢
答案 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);
这将帮助您通过水平和垂直平移水平和垂直缩放画布。