【发布时间】:2012-04-25 22:04:09
【问题描述】:
我最近尝试使用画布创建一个简单的画家。我使用 mousedown 来捕获起点。在 mousemove 上,我从起点到当前点画了一条线,并用当前点替换了起点。最后我删除了 mouseup 上的事件处理程序。这个解决方案在 Chrome、Firefox 和 safari 上运行良好,但是当我在 IE9 上测试它时,我遇到了一个烦人的错误。我绘制的线条仅在 mouseup 事件之后出现。关于为什么会发生这种情况以及我应该如何解决它的任何想法?
我添加了一个简单的测试页面来演示该问题 http://kfirg.com/rage/main.htm 试着画一条长线,或者一个圆圈或类似的东西。在 chrome 上它可以完美运行,但在 IE9 上它会像疯了一样滞后。
注意事项: 我为这个简单的画家使用了 jQuery 和 jCanvas。我也尝试直接使用canvas api自己实现它,我遇到了同样的问题。
更新 jsFiddle:http://jsfiddle.net/t5QpN/1/
【问题讨论】:
-
我在网上找到了这个演示 ie.microsoft.com/testdrive/Graphics/CanvasPad/Default.html 看看鼠标演示,它在 IE 中就像一个魅力,但我似乎找不到那个代码和我的代码之间的区别。如果有人能帮助我找出其中的区别,那就太好了。
-
经过一番玩耍后,我发现如果我像这样清除画布 ctx.fillStyle = "rgba(0,0,0,0.05)"; ctx.fillRect(0, 0, canvas.width, canvas.height);比IE上的性能好很多,谁能解释一下为什么?另一种方法是做 canvas.width = canvas.width; canvas.height = canvas.height;
标签: jquery html internet-explorer canvas jcanvas