Javascript 缩放后如何重置HTML5画布?
我正在尝试创建一个基于HTML5画布的web应用程序,它具有缩放光标的功能。 想法很简单:Javascript 缩放后如何重置HTML5画布?,javascript,html5-canvas,Javascript,Html5 Canvas,我正在尝试创建一个基于HTML5画布的web应用程序,它具有缩放光标的功能。 想法很简单: 用户通过标准HTML输入加载图像 图像在画布上居中 用户可以将图像放大/缩小到光标位置 当用户加载另一个图像时,画布被清除并重置 我在最后一步上遇到了麻烦。当我加载第一个图像时,放大/缩小然后加载第二个图像,我得到的第二个图像已经缩放到前一个图像的比例。我想问题来自于trackTransforms函数(接受它),但我不理解它是如何工作的,所以我无法跟踪问题 实时代码: 作为一种快速而肮脏的解决方案:
- 用户通过标准HTML输入加载图像李>
- 图像在画布上居中李>
- 用户可以将图像放大/缩小到光标位置李>
- 当用户加载另一个图像时,画布被清除并重置李>
trackTransforms
函数(接受它),但我不理解它是如何工作的,所以我无法跟踪问题
实时代码:
作为一种快速而肮脏的解决方案:
- 添加
到ctx.save()
函数定义的开头trackTransforms()
- 添加
ctx.restore();ctx.save()代码>到函数定义的开头
resetCanvas
功能。在handleImage
函数的开头添加对它的调用。此函数清除画布(即删除以前的图像),但不会恢复其状态。啊,我明白了ctx.save()
和ctx.restore()
已被覆盖,但似乎仍在工作。设置后立即调用ctx.save()
,然后调用ctx.restore();ctx.save()
在resetCanvas
的开头@Ouroborus嘿,它工作了!非常感谢。我知道这个古怪的trackTransforms
函数有问题。你介意把它贴出来作为答复吗?