Что означают режимы наложения в pygame?

поверхность.блитировать имеет новый параметр в 1.8: blend. Следующие значения определено:

  • BLEND_ADD
  • BLEND_SUB
  • BLEND_MULT
  • BLEND_MIN
  • BLEND_MAX
  • BLEND_RGBA_ADD
  • BLEND_RGBA_SUB
  • BLEND_RGBA_MULT
  • BLEND_RGBA_MIN
  • BLEND_RGBA_MAX
  • BLEND_RGB_ADD
  • BLEND_RGB_SUB
  • BLEND_RGB_MULT
  • BLEND_RGB_MIN
  • BLEND_RGB_MAX

может кто-нибудь объяснить, что эти режимы в смысле?

2 ответов


вы можете найти источник для операций смешивания здесь:поверхность.h

в основном, ADD добавляет два исходных пикселя и обрезает результат на 255. Вычитает два пикселя и клипы в 0.

MULT: result = (p1 * p2) / 256

MIN: выберите нижнее значение каждого канала (не весь пиксель), поэтому, если pixel1 (100,10,0) и pixel2 составляет (0,10,100) вы получаете (0,10,0)

MAX: противоположность MIN (т. е. (100,10,100))

и есть дополнительный режим наложения, который не очевиден из документов: 0 (или просто оставьте параметр). Этот режим будет "штамповать" исходную поверхность в пункт назначения. Если исходная поверхность имеет альфа-канал, это будет определять, насколько "сильным" является каждый пиксель (0=никакого эффекта, 255=скопировать пиксель, 128: result = .5*source + .5*destination).

полезные эффекты: чтобы затемнить определенную область, используйте режим наложения 0, заполните поверхность источника / штампа черным и установите Альфа 10: (0,0,0,10).

чтобы облегчить его, используйте белый (255,255,255,10).


это режимы смешивания для составления изображений друг на друга. Имя режима наложения уже сообщает вам базовую операцию.

на BLEND_* константы-это просто псевдонимы для BLEND_RGB_* константы и BLEND_RGBA_* варианты работают на всех четырех каналах (включая альфа-канал) в отличие от только RGB.

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