Что означают режимы наложения в Pygame? - PullRequest
8 голосов
/ 02 марта 2009

Surface.blit имеет новый параметр в 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 ]

10 голосов
/ 09 марта 2009

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

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

MULT: result = (p1 * p2) / 256

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

MAX: напротив МИН (т. Е. (100,10,100))

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

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

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

2 голосов
/ 09 марта 2009

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

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

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

...