python pygame 背景图片随屏幕大小变化 [英] python pygame the background image changes with the screen size
问题描述
我将 screen=p.display.set_mode((width,height),flag,0)
设置为我的 pygame 屏幕,flag=p.RESIZABLE
使屏幕可以拉伸.
I set screen=p.display.set_mode((width,height),flag,0)
as my pygame screen and flag=p.RESIZABLE
makes the screen can be stretch.
此时我加载了一张图片作为背景,现在当我拉伸屏幕时,背景不会随着屏幕改变大小,我该怎么做?
At this time i load an image as the background, now when i stretch the screen, the background wont change the size by the screen, how can i do it?
代码如下:
#! /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
).
You have to implement the VIDEORESIZE
event (see pygame.event
).
当窗口被调整大小时,然后从偶数属性中获取窗口的新大小:
When the window is resized, then get the new size of the window from the even attributes:
width, height = event.w, event.h
创建一个与窗口关联的新 Surface 并将背景缩放到新大小:
Create a new Surface associated to the window and scale the background to the new size:
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 背景图片随屏幕大小变化的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!