12

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

有人可以解释这些模式的含义吗?

4

2 回答 2

12

您可以在此处找到混合操作的来源:surface.h

基本上,ADD 将两个源像素相加并在 255 处裁剪结果。SUB 减去两个像素并在 0 处裁剪。

MULTresult = (p1 * p2) / 256

MIN:选择每个通道的较低值(不是整个像素),所以如果 pixel1 是(100,10,0)并且 pixel2 是(0,10,100),你得到(0,10,0)

MAX: 与 MIN 相对(即(100,10,100)

还有一个额外的混合模式,这在文档中并不明显:(0或者只是将参数排除在外)。此模式会将源表面“标记”到目的地。如果源表面具有 Alpha 通道,这将确定每个像素的“强度”程度(0=no effect, 255=copy pixel, 128: result = .5*source + .5*destination)。

有用的效果:要使某个区域变暗,请使用混合模式 0,将源/印章表面填充黑色并将 alpha 设置为10: (0,0,0,10)

要使其变亮,请使用白色(255,255,255,10)

于 2009-03-09T08:57:41.293 回答
2

这些是用于在彼此之上合成图像的混合模式。混合模式的名称已经告诉您底层操作。

BLEND_*常量只是常量的别名,变量BLEND_RGB_*BLEND_RGBA_*所有四个通道(包括 alpha 通道)上运行,而不是仅在 RGB 上运行。

有关不同混合模式及其各自效果的一般信息,请参见此处

于 2009-03-08T23:47:49.960 回答