-
颜色的混合
很多时候我们还需要混合颜色,比如一个僵尸在路过一个火山熔岩坑的时候,它会由绿色变成橙红色,再变为正常的绿色,这个过程必须表现的很平滑,这时候我们就需要混合颜色。
我们用一种叫做“线性插值(linear interpolation)”的方法来做这件事情。为了找到两种颜色的中间色,我们将这第二种颜色与第一种颜色的差乘以一个0~1之间的小数,然后再加上第一种颜色就行了。如果这个数为0,结果就完全是第一种颜色;是1,结果就只剩下第二种颜色;中间的小数则会皆有两者的特色。
#!/usr/bin/env python - import pygame
- frompygame.localsimport*
- fromsysimportexit
- pygame.init()
- screen=pygame.display.set_mode((640,480),0,32) #建立窗口
- color1=(221,99,20)
- color2=(96,130,51) #初始选择的两种即将被混合的颜色
- factor=0.
- def blend_color(color1,color2,blend_factor):
- r1,g1,b1=color1
- r2,g2,b2=color2 #颜色的rgb赋值
- r=r1+(r2-r1)*blend_factor
- g=g1+(g2-g1)*blend_factor #影响因素 分别赋值
- b=b1+(b2-b1)*blend_factor
- returnint(r),int(g),int(b)
- while True:
- for event in pygame.event.get():
- if event.type==QUIT:
- exit()
- screen.fill((255,255,255))
- tri=[(0,120),(639,100),(639,140)]
- pygame.draw.polygon(screen,(0,255,0),tri) #(按钮范围的多边形)
- pygame.draw.circle(screen,(0,0,0),(int(factor*639.0),120),10) #按钮的圆圈
- x,y=pygame.mouse.get_pos()
- ifpygame.mouse.get_pressed()[0]:
- factor=x/639.0
- pygame.display.set_caption("Pygame Color Blend Test - %.3f"%factor) #窗口标题及因素百分比
- color=blend_color(color1,color2,factor)
- pygame.draw.rect(screen,color,(0,240,640,240))
- pygame.display.update()
用pygame写游戏——两色调色板 解释
最新推荐文章于 2021-11-12 17:17:57 发布