Что означают режимы наложения в pygame?
-
03-07-2019 - |
Вопрос
Поверхность.блит имеет новый параметр в версии 1.8:смешивать.Определены следующие значения:
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
Может кто-нибудь объяснить, что означают эти режимы?
Решение
Исходный код операций смешивания можно найти здесь: поверхность.ч
По сути, ADD добавляет два исходных пикселя и обрезает результат до 255.SUB вычитает два пикселя и обрезает их до 0.
MULT
: result = (p1 * p2) / 256
MIN
:Выберите нижнее значение каждого канала (а не всего пикселя), поэтому, если пиксель1 (100,10,0)
и пиксель2 (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.
Общую информацию о различных режимах наложения и их эффектах см. здесь.