Pygame:平滑的图片分离 [英] Pygame : smooth picture aparition

查看:22
本文介绍了Pygame:平滑的图片分离的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有人可以帮我吗?:

我尝试制作一个在用户屏幕上流畅显示的标题:

def image(name,x,y,u):screen.blit(name,(x,y))如果你 = 1pygame.display.update()窗口=='主要'而 windows = 'main':图像(背景,0,0)图片(标题, 640, 120)pygame.display.update()

但是文本突然出现而不是我想要的......

解决方案

你想使用透明,pygame 使用

Can someone help me on this ? :

I try to make a title that appear smoothly on the user screen :

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()

But texte appaers suddently and not as I would like...

解决方案

You want to use transparency, and pygame uses three different types:

There are three types of transparency supported in pygame: colorkeys, surface alphas, and pixel alphas. Surface alphas can be mixed with colorkeys, but an image with per pixel alphas cannot use the other modes. Colorkey transparency makes a single color value transparent. Any pixels matching the colorkey will not be drawn. The surface alpha value is a single value that changes the transparency for the entire image. A surface alpha of 255 is opaque, and a value of 0 is completely transparent.

Per pixel alphas are different because they store a transparency value for every pixel. This allows for the most precise transparency effects, but it also the slowest. Per pixel alphas cannot be mixed with surface alpha and colorkeys.

So let's use colorkey to create a transparent Surface and blit some text to it, and then use surface alpha to create the fade in effect by calling set_alpha and the Surface:

import pygame

def main():
    screen = pygame.display.set_mode((300, 100))
    FONT = pygame.font.SysFont(None, 64)
    text = FONT.render('Hello World', False, pygame.Color('darkorange'))
    surf = pygame.Surface(text.get_rect().size)
    surf.set_colorkey((1,1,1))
    surf.fill((1,1,1))
    surf.blit(text, (0, 0))
    clock = pygame.time.Clock()
    alpha = 0
    while True:
        for e in pygame.event.get():
            if e.type == pygame.QUIT:
                return

        alpha = (alpha + 1) % 256
        surf.set_alpha(alpha)
        
        screen.fill(pygame.Color('dodgerblue'))
        screen.blit(surf, (20, 20))
        clock.tick(120)
        print(alpha)
        pygame.display.update()

if __name__ == '__main__':
    pygame.init()
    main()

这篇关于Pygame:平滑的图片分离的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆