【发布时间】:2020-04-26 13:58:22
【问题描述】:
我在画布上绘制了一张图像,我希望能够以任意比例放大和缩小,同时将图像保持在中心。为此,我的做法是改变画布上下文的比例,重新绘制图像,但我需要计算新图像的左上角,否则不会居中。
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;
那么一般规则是什么?还是有更好的方法?
【问题讨论】:
标签: canvas html5-canvas