绘制不同厚度的线条

时间:2013-09-12 11:02:57

标签: c# line curve pen

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

2 个答案:

答案 0 :(得分:2)

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

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

  1. 将您的路径(线条,曲线,贝塞尔曲线......)添加到新的GraphicsPath实例
  2. 致电FlattenGraphicsPath执行魔术(=仅转换为线路)
  3. 迭代PathPoints以获取相应线段的端点
  4. 将它们进一步细分,直到它们足够短,以便您的“变化”笔策略

答案 1 :(得分:1)

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

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

然后在绘制点时,可以选择点的粗细。因此,您不是只绘制一个像素,而是绘制一个半径为r的圆,其中r是您在该行中该位置所需线条的粗细。