当前位置:   article > 正文

Python 之 pygame 学习(图像透明显示)_pygame图片背景透明

pygame图片背景透明

一、用到的方法

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

例如:


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)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

原图:
在这里插入图片描述
效果图:
在这里插入图片描述
3. image.set_alpha():设置透明度,整体图片的透明度

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

在这里插入图片描述

  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)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/1007635
推荐阅读
相关标签
  

闽ICP备14008679号