2011-07-08 34 views
5

有没有一种方法可以去除线条? 在我的画布上,我有一条线条,不透明度为0.5,宽度为20像素,比方说。 现在我想把它变长一点,就是说要从旧的那条中划出另一条线。 当这样做时,旧线和新线之间的匹配点变得不那么透明(因为它们现在由两条线组成)。 所以我想打破旧线路,然后敲击新线路。在HTML5上清除线条Canvas

我该怎么办?

感谢

回答

4

您如何绘制到画布由API严格定义,但是如何在软件和/或硬件中完成取决于浏览器开发人员。一些使用硬件加速的浏览器和其他浏览器正在使用atm。 (例如使用软件渲染器atm)

在计算机图形学绘图时,绘制到缓冲区。当你调用lineTo和stroke时,缓冲区被更新,并且底层像素中的所有信息都会丢失(如果使用透明度,则会丢失部分信息),并且无法通过撤消将其取回(除非存在包含负载的实现的旧图纸,但这对内存来说真的很重)。

所以能够撤消行程可能节省的CPU/GPU很多时间但对子级重增加内存

+0

基本上,我的意图是编写一个好的绘画程序。 –

4

我想最简单的方法是简单地清除(使用clearRect)整个画布,只是画出整条生产线再次

10

clearRect()是做到这一点的唯一途径。解决此问题的一种好方法(如果画布上绘制了很多元素),则使用绝对定位在HTML中叠加两个画布,一个用于“静态”绘图,另一个用于您计划绘制的顶层清除/重绘。这样可以节省CPU时间,并再次绘制所有画布。

6

另一种优雅的选项是设置“globalCompositeOperation”到“异”和油漆你再排队。 ...所以它将被删除

+0

太棒了,很高兴我偶然发现了这个,因为我将来需要这样做 – JDS