我有一个绘制图像的画布。
然后,用户可以放大或缩小该图像。
当他们停止缩放时,我用高分辨率版本替换缩放图像。
即。一个100x100的图像缩放为2,然后当它们停止时,我将用它的未缩放的200x200版本替换该缩放的图像并在画布中渲染它,它完全覆盖缩放版本之前的位置,因此用户只能看到除了图像突然变得敏锐'。
当我最初居中图像然后围绕中心缩放时,这一切都完美无缺。
所以我也希望允许缩放当前鼠标点而不仅仅是中心,我再次完美地工作,我可以正确地放大和缩小图像。
我的问题是当我没有放大中心的时候,用高分辨率版本替换图像。
我无法确定将它放在同一位置的位置。
即如何计算翻译参数。
我有相同尺寸的Canvas,我的图像尺寸是之前的两倍,我在最后一次缩放操作中使用了鼠标坐标,我使用了比例尺。
那么我如何将大图像准确地放在缩放图像上?
TIA 罗布
答案 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);