|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 lzb1001 于 2022-6-29 09:56 编辑
# 设置透明度
import pygame
import sys
from pygame.locals import *
pygame.init()
size = width, height = 640, 480
bg = (0, 0, 0)
clock = pygame.time.Clock()
screen = pygame.display.set_mode(size)
pygame.display.set_caption('FishC Demo')
turtle = pygame.image.load(r'd:\\work\turtle.png').convert_alpha()
background = pygame.image.load(r'd:\\work\\grass.jpg').convert()
position = turtle.get_rect()
position.center = width // 2, height // 2
print(position, '\n上:', position.top, '\n下:', position.bottom, '\n左:', position.left, '\n右:', position.right, '\n宽度:', position.width, '\n高度:', position.height, '\n中心点:', position.center)
def blit_new(t, s, l, o): # t-target, s-source, l-location, o-opacity
#x = l[0]
#y = l[1]
x, y = l[0], l[1]
temp = pygame.Surface((s.get_width(), s.get_height())).convert()
temp.blit(t, (-x, -y))
temp.blit(s, (0, 0))
temp.set_alpha(o)
t.blit(temp, l)
while True:
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
#screen.fill(bg)
screen.blit(background, (0, 0))
blit_new(screen, turtle, position, 200)
pygame.display.flip()
clock.tick(30)
------------------------------------------
Windows 10 专业版 | Python 3.7.6
------------------------------------------
【我的问题】
1、【代码分析】自定义函数blit_alpha()实现步骤:
① 首先创建一个不带Alpha通道的小乌龟
② 然后将小乌龟所在位置的背景覆盖上去
③ 此刻temp得到的是一个尺寸与小乌龟的尺寸一样大小、上面绘制着背景的Surface对象
④ 将带Alpha通道的小乌龟覆盖上去
⑤ 由于temp是不带Alpha通道的Surface对象,因此可以使用set_alpha()方法设置整个图片的透明度---此时的temp是否包含小乌龟?
⑥ 最后将设置好透明度的temp“贴”到指定位置上---此时的temp是否包含小乌龟?
2、为什么screen.blit(background, (0, 0)),而blit_new(screen, turtle, position, 200)开头不需要screen.?
3、自定义函数blit_new()中的t, s, l, o是称为变量还是参数?如果是参数的话,是形参还是实参?个人理解是形参,不知道对不对?
******************************
感谢大神不吝赐教,为新手解疑释惑。
赠人玫瑰,手有余香,好人一生平安!
|
|