python - python pygame 背景图片随屏幕大小变化
问题描述
我设置screen=p.display.set_mode((width,height),flag,0)
为我的 pygame 屏幕flag=p.RESIZABLE
并使屏幕可以拉伸。
这时候我加载一个图像作为背景,现在当我拉伸屏幕时,背景不会随屏幕改变大小,我该怎么做?
这是代码:
#! /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()
推荐阅读
- r - 如何在R中四舍五入到特定的十进制数字
- android - PWA 中的 URL 栏有问题,我看到了,但其他用户没有
- javascript - 如何在 Blazor 中画一条线?
- django - Django 模型和管理中的业务规则
- r - 用R中的线条连接条形图
- sql-server - Percentage of Sales for each type of customer
- java - 组合列表以创建以逗号分隔的单词
- java - FindFirstFileW 何时将最后一个错误设置为 ERROR_NO_MORE_FILES 而不是 ERROR_FILE_NOT_FOUND?
- python - Nexus 在使用 pip install 时添加了一个结尾 /
- c++ - 警告:标志 '0' 会导致带有 's' 转换说明符的未定义行为