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

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


person AUser123    schedule 12.09.2013    source источник
comment
Отредактируйте свой вопрос, включив в него код, мы можем помочь вам оттуда   -  person Paddyd    schedule 12.09.2013
comment
не могли бы вы предоставить код, который у вас есть?   -  person Ronak Patel    schedule 12.09.2013


Ответы (2)


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

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

  1. добавьте свой путь (линии, кривые, кривые Безье, ...) к новому экземпляру GraphicsPath
  2. вызовите Flatten, чтобы позволить GraphicsPath выполнить магию (= преобразование только в строки)
  3. перебрать PathPoints, чтобы получить конечные точки соответствующих сегментов линии
  4. разделите их дальше, пока они не станут достаточно короткими для вашей стратегии "варьирования" пера.
person olydis    schedule 12.09.2013
comment
Я создал графический путь: GraphicsPath path = new GraphicsPath (); а затем добавил к нему другие необходимые пути: path.AddPath (path2, false); Это делается в цикле. Следующий шаг по изменению толщины? - person AUser123; 12.09.2013
comment
... как я описал, вызовите Flatten, получите линейные сегменты, разделите их по мере необходимости, ЗАТЕМ нарисуйте каждый из них пользовательским пером с толщиной по вашему выбору. - person olydis; 12.09.2013
comment
и вам не нужен новый объект пути, если у вас уже есть путь path2 - person olydis; 12.09.2013

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

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

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

person Roy Dictus    schedule 12.09.2013