2011-04-21 140 views
1

我正在制作一个类似于绘画的网络应用程序。我现在面临的问题是我的绘图算法非常慢。基本上我正在做的是在连续的像素之间绘制一条直线,这些像素已经用mousemove事件记录下来。html 5画布绘制慢!

是否有更智能/(更便宜)的方式来绘制用户创建的线条和曲线使用HTML 5画布?

编辑: 只有当我重画已经在画布上的笔画时,速度非常慢。

+0

如何保存每个像素的颜色,以及如何重新绘制画布? – Jonas 2011-04-21 16:54:56

+2

我们可以看到你的代码吗?正如你所描述的,你的代码应该非常快,但是你可能会保存太多的数据或者重做太多的工作。 – 2011-04-21 17:03:11

+0

我有一个名为rgba的私有变量,我设置context.strokeStyle = rgba – fogy 2011-04-21 17:03:53

回答

1

缓慢(究竟是什么慢?加载速度慢,或渲染速度慢?)可能是由浏览器中的硬件加速引起的。什么是您的浏览器/操作系统?我发现OS X中的Safari 5和Windows 7中的IE9由于其硬件加速而具有最快的提取率。在Chrome中,您必须在about:flags中打开它,并且它有点挑剔。

+0

速度慢的唯一时候是我想重新绘制用户完成的笔画。例如,用户在画布上绘制50行,我想清除画布并重新绘制所有这50行。 – fogy 2011-04-21 17:13:56

2

你想在概念上做什么应该是令人难以置信的快速。既然你不会给我们的代码,在这里:

http://jsfiddle.net/mXrNk/1/

如果这是速度更快,使用它作为一个起点。

+3

请注意,由于您正在为每个mousemove事件重新绘制相同的漫长路径,而不是正确绘制三角洲,所以会出现可怕的锯齿。这里是一个最小改变的版本,它的表现应该如下:http://jsfiddle.net/mXrNk/2/ – Phrogz 2011-04-21 20:43:56

+0

+1!我完全忽略了。一如既往的行善,Phrogz – 2011-04-21 22:39:51