我最近试图用画布创建一个简单的画家。我用mousedown来抓住起点。在mousemove上,我绘制了一条从起点到当前点的线,并用当前点取代了起点。最后,我删除了mouseup上的事件处理程序。这个解决方案在Chrome,Firefox和safari上完美工作,但是当我在IE9上测试它时,我遇到了一个恼人的bug。我绘制的线条只出现在mouseup事件之后。任何想法为什么发生这种情况,我应该如何解决它?与IE9的画布上画线条落后
我添加了一个简单的测试页面来演示问题 http://kfirg.com/rage/main.htm 尝试绘制长线,或圆或类似的东西。在Chrome上它可以很好地工作,但在IE9上它会像疯了一样滞后。
说明: 我已经使用jQuery和jCanvas这个简单的画家。我也尝试直接使用canvas API来实现它,并且遇到了同样的问题。
更新的jsfiddle:http://jsfiddle.net/t5QpN/1/
我发现这个在线演示 http://ie.microsoft.com/testdrive/Graphics/CanvasPad/Default.html 看看鼠标的演示,它在IE中的作用就像一个魅力,但我似乎无法找到该代码和我的区别。如果有人能帮我弄清楚它的差别,那将会很棒。 – kfir 2012-04-13 19:08:25
在玩过一段时间之后,我发现如果清除画布就像这样 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; – kfir 2012-04-21 15:37:14