【发布时间】:2014-12-17 17:43:48
【问题描述】:
我需要使用自定义光圈在位图上画线。在下面的示例中,有两行。左边的线是水平的。右线是对角线 - 向下和向右: 在示例图像中,光圈和路径以红色显示。生成的几何图形显示为黑色。上述两个示例都使用相同的光圈,但沿不同的路径擦拭。
我希望能够使用任意形状的笔进行绘图,尽管上面的示例只显示了矩形。
我尝试使用 System.Drawing.2D 命名空间,但它似乎没有做我需要做的事情。在笔上使用自定义端盖似乎很有希望,但端盖会随着线条的方向旋转。此外,获得正确的线宽似乎具有挑战性。
我考虑过一遍又一遍地绘制光圈,以路径的不同点为中心,但这似乎并不高效。尽量减少孔径绘制的次数也是相当困难的。
我的最佳想法是尝试将“线”绘制为填充形状。起初,我认为凸包算法将是答案 - 只需在绘制开始时和绘制结束时获取孔径的顶点,然后通过凸包算法找到“外部”顶点。这适用于我上面的第一个示例,但星形光圈表明此解决方案不完整。它仅在光圈本身为凸面时才有效。
简单地将所有顶点通过凸包算法将导致以蓝色突出显示的区域被填充,但我只需要填充黑色区域。
【问题讨论】: