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
有人可以解释一下这些模式的含义吗?
解决方案
您可以在此处找到混合操作的源代码: 表面.h
基本上,ADD 将两个源像素相加并将结果剪辑为 255。SUB 减去两个像素并剪辑为 0。
MULT
: result = (p1 * p2) / 256
MIN
: :选择每个通道的较低值(不是整个像素),因此如果 Pixel1 是 (100,10,0)
像素2是 (0,10,100)
, , 你得到 (0,10,0)
MAX
: :与 MIN 相反(即 (100,10,100)
)
还有一种附加的混合模式,从文档中看不出来: 0
(或者直接忽略该参数)。此模式会将源表面“标记”到目标表面。如果源表面有一个 Alpha 通道,这将决定每个像素的“强度”(0
=没有效果, 255
=复制像素, 128
: result = .5*source + .5*destination
).
有用的效果:要使某个区域变暗,请使用混合模式 0,将源/图章表面填充为黑色并将 alpha 设置为 10
: (0,0,0,10)
.
为了使其变亮,请使用白色 (255,255,255,10)
.
其他提示
这些是用于将图像相互叠加的混合模式。混合模式的名称已经告诉您底层操作。
这 BLEND_*
常量只是简单的别名 BLEND_RGB_*
常数和 BLEND_RGBA_*
变体在所有四个通道(包括 Alpha 通道)上运行,而不是仅在 RGB 上运行。
有关不同混合模式及其各自效果的一般信息,请参阅 这里.
不隶属于 StackOverflow