python Pygame фоновое изображение меняется с размером экрана - PullRequest
1 голос
/ 11 января 2020

Я установил screen=p.display.set_mode((width,height),flag,0) в качестве экрана моей пигмеи, а 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)

1 Ответ

1 голос
/ 11 января 2020

Вы должны реализовать событие VIDEORESIZE (см. pygame.event).

При изменении размера окна получите новый размер окна из четных атрибутов:

width, height = event.w, event.h

Создайте новую поверхность, связанную с окном, и масштабируйте фон до нового размера. :

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...