Установить blendmode для рисования штрихов? - PullRequest
6 голосов
/ 09 февраля 2011

Я посмотрел немного и думаю, что ответ на мой вопрос "нет", но здесь идет:

С помощью Javascript и тега canvas можно рисовать линии с альфа-смешиванием с помощью stroke().

Это очень весело, но я бы хотел сделать еще один шаг, установив режим смешивания для обводки.
например, похоже, что он использует классический src * (альфа) + dst * (1 - альфа), и я хотел бы что-то вроде src + dst, чтобы получить аддитивное смешивание.

Эта страница: http://www.andersriggelsen.dk/OpenGL, кажется, выполняет смешивание пиксель за пикселем, которого я действительно хотел бы избежать.

1 Ответ

6 голосов
/ 09 февраля 2011

Единственными «режимами наложения», которые изначально поддерживаются контекстом HTML5 Canvas, являются Глобальные составные операции :

  • source-atop
  • source-in
  • source-out
  • source-over
  • destination-atop
  • destination-in
  • destination-out
  • destination-over
  • lighter
  • darker (больше не в спецификации)
  • xor
  • copy

См. эту ссылку для превосходного анимированного интерактивного примера режимов.Однако нужного вам режима добавления / экрана нет среди них.

Если эта функциональность важна для вас, я написал бесплатную библиотеку context-blender для смешивания двух полотен (или их области) вместе, используя режимы наложения в стиле Photoshop.Как вы говорите, внутренности этого (обязательно) выполняют попиксельные операции.Это не так быстро, как собственный режим композитинга, но и не медленный.Он по-прежнему позволяет вам выполнять собственные операции обводки и заливки на одном (обычно вне экрана) холсте, а затем объединять закадровый холст на другом.смешанные режимы.:)

...