2011-03-19 138 views
5

有绘制粗抗锯齿线的任何“标准”算法吗?我找到了Xiaolin Wu的绘制1px宽度线的算法,但还没有找到更粗线条的扩展。用于绘制粗抗锯齿线的算法

+0

我在这里找到一个实现在javascript:http://members.chello.at/easyfilter/bresenham.js 我把它复制到GitHub的要点为后人:https://gist.github.com/randvoorhies/ 807ce6e20840ab5314eb7c547899de68#file-bresenham-js-L813 – rcv 2017-08-03 16:09:05

回答

2

如果你的线条总是笔直的,而你不想看到抗锯齿曲线,那么可以采用三步法。

我不确定这会在您的环境中效率如何,但您可以使用thickness - 2绘制该行的别名版本,然后使用吴小林的方法两次来消除边缘的反锯齿。 @Francisco P.的方法也可以工作,实际上可能更可取。

这样或那样的混淆需要沿外边缘平滑。如果您处理的线条厚度大于1,可以通过将两个边缘消除锯齿并填充到中间来实现。

3

一个无效的,粗糙的,快速的方法是画出更大的线(比如说4x),然后使用加权平均来缩放它们。详情点击此处:

Algorithms for downscaling bitmapped fonts

看接受的答案。

+0

哈,谢谢,但我想我应该在我的问题中用“高效,合理优雅”替换“标准”一词。 – rcv 2011-03-19 21:09:56

+1

好吧,我可能会破坏我的努力,但这是一种非常标准的方式来完成你所要求的。 – 2011-03-20 00:53:31

+0

我认为这涉及CPU和内存之间的折衷。进行多次传递可能会比缩小更耗费计算成本,但降尺度可能需要更多的内存才能获得更高的分辨率。最重要的是,你有CPU处理收缩线。最后,这两种方法在台式机上可能会表现相同,但如果我们谈论手机,它可能会有所作为。无论哪种方式,我认为你的建议是更主流的。 – Xenethyl 2011-03-20 03:46:26