2009-03-02 99 views
7

Surface.blit在1.8中有一个新参数:混合。下面的值被定义:pygame中的混合模式是什么意思?

  • 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

能someon Ë解释这些模式是什么意思?

回答

9

你可以找到的混合操作这里的源:surface.h

基本上,添加将两个源像素和剪辑的结果,在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 =无效,255 =复制像素,128result = .5*source + .5*destination)。

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

要照亮它,请使用白色(255,255,255,10)

2

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

BLEND_*常数仅仅是BLEND_RGB_*常数的别名,而BLEND_RGBA_*变体在所有四个通道(包括alpha通道)上操作,而不是仅对RGB操作。

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

+0

感谢您的回答。你可以在什么时候使用哪种混合类型? – 2009-03-09 08:44:10

+0

Thad都取决于你想达到什么。这可能有点违反直觉,但要记住每种模式的作用是告诉你什么颜色会产生什么效果。您可以使用GIMP或Paint.NET等图形软件来播放混合模式,因为它们在层次上基本相同。 – Joey 2009-03-09 10:15:58