python - Pygame:平滑的图片分离
问题描述
有人可以帮我吗?:
我尝试制作一个在用户屏幕上流畅显示的标题:
def image(name,x,y,u):
screen.blit(name,(x,y))
if u = 1
pygame.display.update()
Window == 'main'
While windows = 'main':
image(background,0,0)
image(title, 640, 120)
pygame.display.update()
但是文本突然出现,而不是我想要的......
解决方案
pygame.Surface.blit()
已经做了你想要的。它将一个表面弯曲到另一个表面,这取决于它的 Alpha 通道。您所要做的就是通过以下方式设置 Alpha 通道pygame.Surface.set_alpha()
:
image.set_alpha(min(1.0,alpha)*255)
编写一个函数,将表面“混合”到屏幕上。在下面的函数BlendSurface
中,参数alpha
是范围[0, 1]内的表面的不透明度值。0.0 将生成一个完全透明(不可见)的表面。1.0 将生成一个完全不透明的表面:
def BlendSurface(image, pos, alpha):
image.set_alpha(min(1.0,alpha)*255)
screen.blit(image, pos)
查看简单的演示程序:
import pygame
import pygame.font
pygame.init()
BLUE = ( 0, 0, 255)
YELLOW = (255, 255, 0)
size = (800,600)
screen = pygame.display.set_mode(size)
def BlendSurface(image, pos, alpha):
image.set_alpha(min(1.0,alpha)*255)
screen.blit(blendImage, pos)
clock = pygame.time.Clock()
font = pygame.font.SysFont('Times New Roman', 100)
text = font.render('blend text', False, YELLOW)
i = 0
done = False
while not done:
clock.tick(60)
i += 1
if i > 200:
i = 0
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
screen.fill(BLUE)
BlendSurface(text, (100, 100), i/200)
pygame.display.flip()
推荐阅读
- c# - Asp.net:Response.Write OnServerClick 代码隐藏功能不起作用
- javascript - 打开时如何使用现有联系人填充模式中的字段?
- android - RecyclerView 中的重复项 - SortedList
- c# - 为 ReportExecution2005 添加 Web 服务 - 找不到资源 C#
- javascript - 将数组转换为嵌套对象javascript
- python - 使用 python 将 hh:mm 浮点数转换为格式
- node.js - 是否可以更改日期格式?
- javascript - Sinch - 无法建立从网络 (javascript) 到移动应用程序 (android/iOS) 的呼叫
- php - 如何基于 Laravel 5 组织我的 API?
- c# - 如果在 SUT 的另一部分(异步流)中引发异常,则测试失败