1
我在画布上绘制了一个图像,我希望能够放大和缩小任何比例,同时保持图像居中。为此,我的方法是更改画布上下文的缩放比例并重新绘制图像,但我需要计算新图像的左上角,否则它不会居中。缩放后保持图像居中
function zoom(canvas, context, scale) {
var image = new Image();
image.src = canvas.toDataURL('image/png');
canvas.clearRect(0, 0, canvas.width, canvas.height);
context.scale(scale, scale);
var x = ???,
y = ???;
context.drawImage(image, x, y);
}
的问题是如何计算x
和y
以这样一种方式,它适用于任何规模。我已经想出了一些特殊情况,但我找不到一般规则。当比例尺为0.5,保持居中图像的规则是:
var x = canvas.width/2,
y = canvas.height/2;
当比例尺为2,则该规则是:
var x = -canvas.width/4,
y = -canvas.height/4;
而当比例为3时,该规则是:
var x = -canvas.width/3,
y = -canvas.height/3;
那么通用规则是什么?还是有更好的方法?
非常感谢,完美的答案。 – Sophivorus