2

我想使用 C# 绘制一条具有不同厚度的连续线/曲线。如果我将 Pen 的宽度设置为固定,则粗细不会变化。如何在绘制线条时更改线条的粗细?任何帮助表示赞赏。

4

2 回答 2

2

一般方法:将线分成段/点,并使用不同的笔进行多次绘制调用(如其他帖子中所述)。

现在是曲线 - 如果您不想重新实现他们的算法,您可能想使用GraphicsPath将任意路径转换为线段(具有足够的分辨率)。

  1. 将您的路径(线条、曲线、贝塞尔曲线...)添加到新GraphicsPath实例
  2. 调用FlattenGraphicsPath执行魔术(= 仅转换为行)
  3. 迭代PathPoints得到相应线段的端点
  4. 进一步细分它们,直到它们足够短以适应您的“变化”笔策略
于 2013-09-12T11:18:10.123 回答
1

如果逐点绘制线条,则只能改变线条的粗细,然后再改变点的粗细。

要了解如何逐点绘制线条,如果手边没有线条绘制算法,请查找它们。绘制直线的一个例子是 Bresenham 算法。您可以在http://en.wikipedia.org/wiki/Bresenham 's_line_algorithm 找到更多相关信息。

然后当你绘制一个点时,你可以选择点的粗细。因此,您可以绘制一个半径为 r 的圆,而不是仅绘制一个像素,其中 r 是您想要在线中该位置处的线的粗细。

于 2013-09-12T11:11:25.637 回答