gpt4 book ai didi

python pygame 背景图像随屏幕大小变化

转载 作者:行者123 更新时间:2023-12-01 06:35:21 27 4
gpt4 key购买 nike

我将 screen=p.display.set_mode((width,height),flag,0) 设置为我的 pygame 屏幕,并且 flag=p.RESIZABLE 使屏幕可以拉伸(stretch)。

此时我加载了一个图像作为背景,现在当我拉伸(stretch)屏幕时,背景不会随屏幕改变大小,我该怎么办?

代码如下:

#! /usr/bin/python
import sys
import pygame as p

pic="/home/finals/python/alien/image/muha.png"

def screen_setting(width,height):
p.init()
flag=p.RESIZABLE
screen=p.display.set_mode((width,height),flag,0)
bk=p.transform.smoothscale(p.image.load(pic).convert(),(width,height))

while True:
for event in p.event.get():
if event.type == p.QUIT:
sys.exit()
screen.blit(bk,(0,0))
p.display.flip()

screen_setting(1200,800)

最佳答案

您必须实现 VIDEORESIZE 事件(请参阅 pygame.event )。

当窗口大小改变时,从偶数属性中获取窗口的新大小:

width, height = event.w, event.h

创建一个与窗口关联的新 Surface 并将背景缩放到新尺寸:

def screen_setting(width,height):
p.init()
flag = p.RESIZABLE
screen=p.display.set_mode((width, height), flag, 0)
bk_orig = p.image.load(pic).convert()
bk = p.transform.smoothscale(bk_orig, (width, height))

while True:
for event in p.event.get():
if event.type == p.QUIT:
sys.exit()
elif event.type == p.VIDEORESIZE:
width, height = event.w, event.h
screen = p.display.set_mode((width, height), flag, 0)
bk = p.transform.smoothscale(bk_orig, (width, height))

screen.blit(bk, (0 ,0))
p.display.flip()

关于python pygame 背景图像随屏幕大小变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59694909/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com