Я недавно попытался создать простой художник с использованием холста. Я использовал mousedown, чтобы захватить отправную точку. На mousemove я нарисовал линию от начальной точки до текущей точки и заменил начальную точку текущей точкой. Наконец, я удалил обработчики событий в mouseup. Это решение отлично работало на Chrome, Firefox и Safari, но когда я тестировал его на IE9, я столкнулся с раздражающей ошибкой. Линии, которые я рисую, появляются только после события mouseup. Любые идеи относительно того, почему это происходит, и как мне его исправить?Рисование линий на холсте с замерами IE9
Я добавил простую тестовую страницу, чтобы продемонстрировать этот вопрос http://kfirg.com/rage/main.htm Попробуйте нарисовать длинную линию или круг или что-то подобное. На хром он будет работать отлично, но на IE9 он будет отставать, как сумасшедший.
Примечания: Я использовал jQuery и jCanvas для этого простого художника. Я также попытался реализовать его сам, используя canvas api напрямую, и я столкнулся с той же проблемой.
Обновлено jsFiddle: http://jsfiddle.net/t5QpN/1/
Я нашел демо онлайн http://ie.microsoft.com/testdrive/Graphics/CanvasPad/Default.html Посмотрите на демо-мыши, и он работает как очарование в IE там, но я не могу найти разницу между этим кодом и моим.Если бы кто-нибудь мог помочь мне разобраться в различии, это было бы здорово. – kfir
После некоторого разыгрывания я обнаружил, что если я очищаю полотно так, то 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