我想能够使用任意形状的笔进行绘制,即使上述示例仅显示矩形也可以。
我尝试使用System.Drawing.2D命名空间,但似乎无法满足我的需求。使用笔上的自定义端点似乎很有前途,但端点随着线条方向旋转。此外,正确设置线宽似乎具有挑战性。 我考虑过多次绘制光圈,在路径的不同点居中绘制,但这似乎不够高效。还很难最小化光圈绘制的数量。
我能想到的最好主意是尝试将“线条”绘制为填充形状。起初,我认为一个凸包算法就是答案-只需在绘制开始和结束时取光圈的顶点并通过凸包算法找到“外部”顶点。这适用于上面的第一个示例,但星形光圈说明这个解决方案是不完整的。它仅在光圈本身是凸形时有效。 简单地将所有顶点通过凸包算法会导致填充蓝色突出显示的区域,但我需要仅填充黑色区域。