Traktor/myenv/Lib/site-packages/pygame/examples/blend_fill.py

115 lines
3.3 KiB
Python
Raw Normal View History

2024-05-23 01:57:24 +02:00
#!/usr/bin/env python
""" pygame.examples.blend_fill
BLEND_ing colors in different ways with Surface.fill().
Keyboard Controls:
* Press R, G, B to increase the color channel values,
* 1-9 to set the step range for the increment,
* A - ADD, S- SUB, M- MULT, - MIN, + MAX to change the blend modes
"""
import os
import pygame as pg
from pygame import K_1, K_2, K_3, K_4, K_5, K_6, K_7, K_8, K_9
def usage():
print("Press R, G, B to increase the color channel values,")
print("1-9 to set the step range for the increment,")
print("A - ADD, S- SUB, M- MULT, - MIN, + MAX")
print(" to change the blend modes")
main_dir = os.path.split(os.path.abspath(__file__))[0]
data_dir = os.path.join(main_dir, "data")
def main():
color = [0, 0, 0]
changed = False
blendtype = 0
step = 5
pg.init()
screen = pg.display.set_mode((640, 480), 0, 32)
screen.fill((100, 100, 100))
image = pg.image.load(os.path.join(data_dir, "liquid.bmp")).convert()
blendimage = pg.image.load(os.path.join(data_dir, "liquid.bmp")).convert()
screen.blit(image, (10, 10))
screen.blit(blendimage, (200, 10))
pg.display.flip()
pg.key.set_repeat(500, 30)
usage()
going = True
while going:
for event in pg.event.get():
if event.type == pg.QUIT:
going = False
if event.type == pg.KEYDOWN:
usage()
if event.key == pg.K_ESCAPE:
going = False
if event.key == pg.K_r:
color[0] += step
if color[0] > 255:
color[0] = 0
changed = True
elif event.key == pg.K_g:
color[1] += step
if color[1] > 255:
color[1] = 0
changed = True
elif event.key == pg.K_b:
color[2] += step
if color[2] > 255:
color[2] = 0
changed = True
elif event.key == pg.K_a:
blendtype = pg.BLEND_ADD
changed = True
elif event.key == pg.K_s:
blendtype = pg.BLEND_SUB
changed = True
elif event.key == pg.K_m:
blendtype = pg.BLEND_MULT
changed = True
elif event.key == pg.K_PLUS:
blendtype = pg.BLEND_MAX
changed = True
elif event.key == pg.K_MINUS:
blendtype = pg.BLEND_MIN
changed = True
elif event.key in (K_1, K_2, K_3, K_4, K_5, K_6, K_7, K_8, K_9):
step = int(event.unicode)
if changed:
screen.fill((100, 100, 100))
screen.blit(image, (10, 10))
blendimage.blit(image, (0, 0))
# blendimage.fill (color, (0, 0, 20, 20), blendtype)
blendimage.fill(color, None, blendtype)
screen.blit(blendimage, (200, 10))
print(
f"Color: {tuple(color)}, Pixel (0,0): {[blendimage.get_at((0, 0))]}"
)
changed = False
pg.display.flip()
pg.quit()
if __name__ == "__main__":
main()