画布:用更大的图像替换缩放的图像

时间:2015-12-06 12:18:15

标签: javascript canvas

我有一个绘制图像的画布。

然后,用户可以放大或缩小该图像。

当他们停止缩放时,我用高分辨率版本替换缩放图像。

即。一个100x100的图像缩放为2,然后当它们停止时,我将用它的未缩放的200x200版本替换该缩放的图像并在画布中渲染它,它完全覆盖缩放版本之前的位置,因此用户只能看到除了图像突然变得敏锐'。

当我最初居中图像然后围绕中心缩放时,这一切都完美无缺。

所以我也希望允许缩放当前鼠标点而不仅仅是中心,我再次完美地工作,我可以正确地放大和缩小图像。

我的问题是当我没有放大中心的时候,用高分辨率版本替换图像。

我无法确定将它放在同一位置的位置。

即如何计算翻译参数。

我有相同尺寸的Canvas,我的图像尺寸是之前的两倍,我在最后一次缩放操作中使用了鼠标坐标,我使用了比例尺。

那么我如何将大图像准确地放在缩放图像上?

TIA 罗布

1 个答案:

答案 0 :(得分:0)

我想我明白了。 重新运行最后一次缩放变换,然后应用反转比例,然后渲染较大的图像。

ctx.translate(pt.x,pt.y);
ctx.scale(factor,factor);
ctx.translate(-pt.x,-pt.y);

ctx.scale(1/factor,1/factor);

ctx.drawImage(.....)

ctx.setTransform(1,0,0,1,0,0);