Нарисуйте линию с различной толщиной

Я хочу нарисовать одну непрерывную линию / кривую с различной толщиной, используя C#. Если я установлю ширину пера как фиксированную, толщина не изменится. Как можно изменить толщину линии, как она нарисована? Любая помощь приветствуется.

2 ответа

Общий подход: разделите линию на сегменты / точки и сделайте несколько вызовов для рисования с разными ручками (как упоминалось в других сообщениях).

Теперь о кривых - если вы не хотите переопределять их алгоритмы, вы можете использовать GraphicsPath преобразовывать произвольные пути в отрезки (с достаточным разрешением).

  1. добавьте свой путь (линии, кривые, Безье, ...) к свежему GraphicsPath пример
  2. вызов Flatten позволить GraphicsPath выполнить магию (= преобразование только в строки)
  3. перебрать PathPoints чтобы получить конечные точки соответствующих отрезков
  4. подразделяйте их дальше, пока они не станут достаточно короткими для вашей "разной" стратегии пера

Вы можете изменять толщину линии только в том случае, если вы рисуете линию по точкам, а затем меняете толщину точек.

Чтобы узнать, как рисовать линии точка за точкой, посмотрите алгоритмы рисования линий, если у вас их нет под рукой. Одним из примеров рисования прямых линий является алгоритм Брезенхэма. Вы можете узнать больше об этом на http://en.wikipedia.org/wiki/Bresenham's_line_algorithm.

Затем, когда вы строите точку, вы можете выбрать толщину точки. Таким образом, вместо того, чтобы просто рисовать один пиксель, вы рисуете круг с радиусом r, где r - толщина линии, которую вы хотите в этой позиции линии.

Другие вопросы по тегам