Python 之 pygame 学习(图像透明显示)

文章目录

    • 一、用到的方法
    • 二、示例

一、用到的方法

  1. pygame.time.Clock():创建一个对象来帮助跟踪时间
    主要控制一秒内运行的帧率
pygame.time.Clock.tick():更新时钟
如果传递可选的帧率参数,该函数将延迟以使游戏运行速度低于每秒给定的滴答数。
这可以用于帮助限制游戏的运行时速度
例如:Clock.tick(40),每帧调用 一次,程序将永远不会超过每秒40帧。
  1. img.set_colorkey():设置透明颜色键
set_colorkey(Color)
设置Surface的当前颜色键。
将此Surface 映射到目标上时,与color颜色相同的任何像素都将是透明的。
颜色可以是RGB颜色或映射的颜色整数。

例如:


dog = pygame.image.load("god.png").convert()
background = pygame.image.load("background.jpg").convert()

position = dog.get_rect()
position.center = width //2,height //2
# dog 图片背景是白色,这里设置color为(255,255,255) 白色
# 此时与设置的color相同的颜色就会变成透明的
dog.set_colorkey((255,255,255))
# 设置为死循环,确保窗口一直显示
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
    screen.blit(background,(0,0))
    screen.blit(dog,position)
    pygame.display.flip()

    clock.tick(30)

原图:
Python 之 pygame 学习(图像透明显示)_第1张图片
效果图:
Python 之 pygame 学习(图像透明显示)_第2张图片
3. image.set_alpha():设置透明度,整体图片的透明度

set_alpha(value)
设置Surface的当前Alpha值。
将此Surface渲染到目标上时,像素将被绘制为略微透明。
value值是0255之间的整数,0表示完全透明,255表示完全不透明。

Python 之 pygame 学习(图像透明显示)_第3张图片

  1. convert():更改图像的像素格式
    使用更改的像素格式创建Surface的新副本。
    可以从另一个现有Surface确定新的像素格式。
    如果没有传递参数,则新Surface将具有与显示原Surface相同的像素格式。

二、示例

import pygame
import sys
from pygame.locals import *
pygame.init()
size = width,height = 1200,480
bg = (0,0,0)
clock = pygame.time.Clock()
screen = pygame.display.set_mode(size)
pygame.display.set_caption("初次见面,请大家多多关照")

dog = pygame.image.load("god.png").convert_alpha()
background = pygame.image.load("background.jpg").convert()

position = dog.get_rect()
position.center = width //2,height //2

def blit_alpha(target,source,location,opacity):
    x = location[0]
    y = location[1]
    temp = pygame.Surface((source.get_width(),source.get_height())).convert()
    temp.blit(target,(-x,-y))
    temp.blit(source,(0,0))
    temp.set_alpha(opacity)
    target.blit(temp,location)

# 设置为死循环,确保窗口一直显示
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()

    # 更新图像
    screen.blit(background,(0,0))
    blit_alpha(screen,dog,position,200)
    # 更新界面
    pygame.display.flip()

    clock.tick(30)

你可能感兴趣的:(Pygame学习,Python,之,pygame,学习(图像透明显示))