gpt4 book ai didi

c# - 用任意形状的笔画

转载 作者:行者123 更新时间:2023-11-30 16:56:46 25 4
gpt4 key购买 nike

我需要使用自定义光圈在位图上绘制线条。在下面的示例中,有两行。左边的线是水平的。右边的线是对角线 - 向下和向右: Example image在示例图像中,光圈和路径显示为红色。生成的几何体显示为黑色。上述两个示例都使用相同的光圈,但沿不同的路径删除。

我希望能够用任意形状的笔绘图,即使上面的示例只显示了矩形。

我尝试使用 System.Drawing.2D 命名空间,但它似乎没有完成我需要它做的事情。在钢笔上使用自定义端盖似乎很有前途,但端盖会随着线条的方向旋转。此外,获得正确的线宽似乎具有挑战性。 failed end-caps example

我考虑过一遍又一遍地绘制光圈,以路径上的不同点为中心,但这似乎并不高效。尽量减少孔径绘制的次数也相当困难。

我最好的想法 是尝试将“线”绘制为填充形状。起初,我认为凸包算法会是答案 - 只需在绘制开始和绘制结束时获取光圈的顶点,然后将它们放入凸包算法中以找到“外部”顶点。这适用于我上面的第一个例子,但星形光圈表明这个解决方案是不完整的。它仅在孔径本身为凸形时才起作用。 enter image description here

简单地将所有顶点通过凸包算法将导致填充以蓝色突出显示的区域,但我只需要填充黑色区域。

最佳答案

这是一个丑陋、不优雅的解决方案,但您可以采用表示笔划方向和长度的向量,并沿该向量多次重绘形状。 (你必须选择一个不留空隙的间隔来绘制它。)如果你想要别名输出,这只会产生正确的结果;它会搞砸 GDI+ 所做的任何抗锯齿处理,因为带有中间调的像素可能会被覆盖,使它们比应有的颜色更暗。

关于c# - 用任意形状的笔画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27531654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com