2012-03-26 163 views
1

有没有人知道在栅格中绘制反锯齿(平滑)二次贝塞尔曲线的体面算法? 我可以简单地将它们绘制为矢量,然后将图像复制到光栅上。如何在光栅中绘制反锯齿贝塞尔曲线?

是否有任何聪明且免费可用的算法将曲线直接绘制到像素? 我目前使用的算法在这里执行: http://www.bytearray.org/?p=67 quadBezier() 我想知道是否有办法改变它来渲染反锯齿bezier? 在此先感谢。

我这样做是为了学习的目的,因为我希望它会比使用Shape选项中的复制像素更快。 下面是该无光滑的贝塞尔曲线的例子就是比普通贝塞尔更快: http://lab.generalrelativity.org/raster/

+0

是不是反锯齿后处理功能?在任何情况下,实现它都不是一件容易的事情 - 对它的实施进行一般性搜索应该能让你了解涉及的内容。只需使用'draw()' – divillysausages 2012-03-27 22:26:46

回答

4

实现自己的算法几乎肯定会比使用bitmapData.draw(shape)慢。

当你使用graphics.lineTographics.curveTo等,你正在构建一个模型,但实际上还没有绘制任何东西。只有在形状被添加到舞台后,并且在后续的[render]阶段中,模型才被遍历,并且像素由用C写成的快速算法绘制。当使用bitmapData.draw将矢量绘制成位图时,它将使用相同的本地代码。因此,就像您想象的那样,您不会像抽取任何东西两次,并且通过在AS3中单独从头开始实施任何事情都很难(或不可能)击败速度。

+1

我跑了一些测试(为了速度),发现你是对的。我还发现了绘制贝塞尔图的算法是如何工作的。感谢您的彻底解释。 – zehelvion 2012-04-04 10:01:05