Рисование одной заполненной фигуры с разными стилями обводки - PullRequest
5 голосов
/ 17 мая 2011

Можно ли нарисовать на холсте одну заполненную фигуру с разными стилями обводки?

Другими словами, можно ли нарисовать синий треугольник, и у каждой стороны будет другой цвет?

Я понимаю, что есть неоптимальное решение:

  1. в качестве нового пути, нарисуйте треугольник без штрихов, заполните его, затем закройте путь
  2. начните новый путь, перерисовайтепервая сторона с первым цветным штрихом, закройте путь
  3. , начните новый путь, перерисовайте вторую сторону с другим цветным штрихом, закройте путь
  4. начните новый путь, перерисовайте третийсторона с другим цветным штрихом, закройте путь

Короче говоря, нарисуйте заполненную фигуру без штрихов, затем перерисуйте каждую сторону с уникальным стилем штрихов.

Это небольшое дело для одного треугольника, но если у вас есть много более сложных фигур, это кажется неэффективным.

Итак - можно ли нарисовать одну фигуру с разными стилями обводки вдоль различных сегментовпути?

1 Ответ

4 голосов
/ 17 мая 2011

Короткий ответ - нет, во всяком случае, не встроенным. Причина в том, что при каждом новом вызове stroke() он будет обводить весь путь, а не только еще не обработанные части.

Вы всегда можете создать свою собственную функцию, которая, скажем, принимает кучу точек или типов сегментов (вам нужно создать свой собственный класс), присваивая каждому цвет, и эта функция анализирует их и выполняет рисование. , Но это все, что вы получите.

Вы быстро поймете, что это открывает новые и волнующие проблемы, например, что делать с митрингом. И если вы не знаете, что такое подавление, вы узнаете очень быстро, выполнив это:)

(... и затем некоторые из этих проблем можно решить с помощью ctx.linecap = 'round'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...