Нарисуйте линию с различной толщиной
Я хочу нарисовать одну непрерывную линию / кривую с различной толщиной, используя C#. Если я установлю ширину пера как фиксированную, толщина не изменится. Как можно изменить толщину линии, как она нарисована? Любая помощь приветствуется.
2 ответа
Общий подход: разделите линию на сегменты / точки и сделайте несколько вызовов для рисования с разными ручками (как упоминалось в других сообщениях).
Теперь о кривых - если вы не хотите переопределять их алгоритмы, вы можете использовать GraphicsPath
преобразовывать произвольные пути в отрезки (с достаточным разрешением).
- добавьте свой путь (линии, кривые, Безье, ...) к свежему
GraphicsPath
пример - вызов
Flatten
позволитьGraphicsPath
выполнить магию (= преобразование только в строки) - перебрать
PathPoints
чтобы получить конечные точки соответствующих отрезков - подразделяйте их дальше, пока они не станут достаточно короткими для вашей "разной" стратегии пера
Вы можете изменять толщину линии только в том случае, если вы рисуете линию по точкам, а затем меняете толщину точек.
Чтобы узнать, как рисовать линии точка за точкой, посмотрите алгоритмы рисования линий, если у вас их нет под рукой. Одним из примеров рисования прямых линий является алгоритм Брезенхэма. Вы можете узнать больше об этом на http://en.wikipedia.org/wiki/Bresenham's_line_algorithm.
Затем, когда вы строите точку, вы можете выбрать толщину точки. Таким образом, вместо того, чтобы просто рисовать один пиксель, вы рисуете круг с радиусом r, где r - толщина линии, которую вы хотите в этой позиции линии.