如何获得差异混合模式?
How to get the Difference blending mode?
我正在尝试为 Pygame 中的游戏制作夜间效果。所以我要在屏幕上 blit 一个黑色图像,然后将其混合模式更改为 Difference
就像在 Photoshop 中一样,以使屏幕看起来更暗。但是,我仍然不知道该怎么做,因为我还没有使用 Pygame 中的混合模式。有帮助吗?
可以通过设置 pygame.Surface.blit
的可选 special_flags 参数来更改混合模式:
blit(source, dest, area=None, special_flags=0) -> Rect
[...]
New in pygame 1.8: Optional special_flags: BLEND_ADD
, BLEND_SUB
, BLEND_MULT
, BLEND_MIN
, BLEND_MAX
.
New in pygame 1.8.1: Optional special_flags: 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
.
New in pygame 1.9.2: Optional special_flags: BLEND_PREMULTIPLIED
New in pygame 2.0.0: Optional special_flags: BLEND_ALPHA_SDL2
[...]
例如:
screen.blit(image, (x, y), special_flags = pygame.BLEND_RGBA_SUB)
不幸的是,Pygame 没有提供 2 个图像绝对差异的混合模式。但是可以通过
来实现
MAX(SUB(image1, imgage2), SUB(image2, image1))
例如:
image1 = pygame.image.load('image2.png')
image2 = pygame.image.load('image1.png')
temp_image = image1.copy()
temp_image.blit(image2, (0, 0), special_flags = pygame.BLEND_RGBA_SUB)
final_image = image2.copy()
final_image.blit(image1, (0, 0), special_flags = pygame.BLEND_RGBA_SUB)
final_image.blit(temp_image, (0, 0), special_flags = pygame.BLEND_RGBA_MAX)
我正在尝试为 Pygame 中的游戏制作夜间效果。所以我要在屏幕上 blit 一个黑色图像,然后将其混合模式更改为 Difference
就像在 Photoshop 中一样,以使屏幕看起来更暗。但是,我仍然不知道该怎么做,因为我还没有使用 Pygame 中的混合模式。有帮助吗?
可以通过设置 pygame.Surface.blit
的可选 special_flags 参数来更改混合模式:
blit(source, dest, area=None, special_flags=0) -> Rect
[...]
New in pygame 1.8: Optional special_flags:BLEND_ADD
,BLEND_SUB
,BLEND_MULT
,BLEND_MIN
,BLEND_MAX
.
New in pygame 1.8.1: Optional special_flags: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
.
New in pygame 1.9.2: Optional special_flags:BLEND_PREMULTIPLIED
New in pygame 2.0.0: Optional special_flags:BLEND_ALPHA_SDL2
[...]
例如:
screen.blit(image, (x, y), special_flags = pygame.BLEND_RGBA_SUB)
不幸的是,Pygame 没有提供 2 个图像绝对差异的混合模式。但是可以通过
来实现MAX(SUB(image1, imgage2), SUB(image2, image1))
例如:
image1 = pygame.image.load('image2.png')
image2 = pygame.image.load('image1.png')
temp_image = image1.copy()
temp_image.blit(image2, (0, 0), special_flags = pygame.BLEND_RGBA_SUB)
final_image = image2.copy()
final_image.blit(image1, (0, 0), special_flags = pygame.BLEND_RGBA_SUB)
final_image.blit(temp_image, (0, 0), special_flags = pygame.BLEND_RGBA_MAX)