所以,我正在制作一个相对简单的HTML5 Canvas绘图Web应用程序。基本上,您可以选择您的颜色,然后在500 x500画布上绘制。这将是一个主题为“涂鸦”墙,所以我试图创造一个涂鸦效果的绘图,很像喷雾工具在微软油漆的昔日。
请随意查看here。
为了促进这种效果,我使用了web worker来回调鼠标事件并异步绘制到画布上。我现在的简单实现是,在任何鼠标事件上,在事件坐标周围随机绘制5个像素。
我想做的是,从mousedown事件到mouseup事件连续绘制这些像素,同时更新mousemove事件的坐标。根据我有限的JavaScript知识,我想这可能涉及到setTimeout(),但我不确定如何操作它来实现我想要的。
免责声明:这是一个学校项目的一部分,因此我试图避免使用jQuery、 AJAX 和其他类似的框架;我的目标是做一个尽可能纯粹的JavaScript/HTML5 Web应用程序。
先谢谢你了。
3条答案
按热度按时间muk1a3rh1#
使用计时器(不需要工作人员):
elcex8rz2#
如果你想使用WebWorker(例如更复杂的绘图算法),我可以想到以下设置:
在工人
但我认为对于一个简单的涂鸦工具来说,Worker的开销太大了。使用简单的解决方案,而无需像@Esailija演示的Worker。
如果你有一个更复杂的应用程序,可以很好地利用工人,你不会真的产卵他们对mousedown和终止他们。相反,您可以为单一类型的工具示例化单个Workers,并向它们触发开始处理和结束处理事件。
bvjxkvbb3#
在web worker中绘制SVG并将其传递给其父对象并将SVG附加到DOM是可能的。
示例