Graphics 粗抗锯齿线的绘制算法

Graphics 粗抗锯齿线的绘制算法,graphics,drawing,Graphics,Drawing,是否有用于绘制粗抗锯齿线的“标准”算法?我已经找到了吴晓林绘制1px宽线条的算法,但还没有找到更粗线条的扩展。一个不完善、粗糙、快速的方法是将线条画得更大(比如4x),然后使用权重平均法缩小。详情如下: 请看公认的答案。如果您的直线始终是直的,并且您不希望看到反锯齿曲线,那么您可以采用三次通过的方法 我不确定这在您的环境中有多有效,但您可以使用厚度-2绘制线条的别名版本,然后使用吴晓林的方法两次消除边缘的别名@Francisco P.的方法也会奏效,而且实际上可能更可取 无论如何,需要沿外边缘

是否有用于绘制粗抗锯齿线的“标准”算法?我已经找到了吴晓林绘制1px宽线条的算法,但还没有找到更粗线条的扩展。

一个不完善、粗糙、快速的方法是将线条画得更大(比如4x),然后使用权重平均法缩小。详情如下:


请看公认的答案。

如果您的直线始终是直的,并且您不希望看到反锯齿曲线,那么您可以采用三次通过的方法

我不确定这在您的环境中有多有效,但您可以使用
厚度-2
绘制线条的别名版本,然后使用吴晓林的方法两次消除边缘的别名@Francisco P.的方法也会奏效,而且实际上可能更可取


无论如何,需要沿外边缘平滑锯齿。如果你处理厚度大于1的线,你可以通过画两个边反锯齿然后填充中间来实现这一点。

哈,谢谢,但是我想我应该在我的问题中用“有效的,合理的优雅”来代替“标准”这个词。但这是一种非常标准的方式来满足你的要求。我认为这可以归结为CPU和内存之间的权衡。进行多个过程可能比缩小尺寸在计算上更昂贵,但缩小尺寸可能需要更多内存才能获得更高的分辨率。除此之外,您还可以通过CPU处理来缩小生产线。最终,这两种方法在台式机上的性能可能是相同的,但如果我们谈论的是手机,可能会有所不同。不管怎样,我认为你的建议更为主流。我在这里找到了一个javascript实现:我将其复制到github gist中,供后人参考: