更改Pygame窗口大小而不丢失内容

时间:2014-12-26 19:37:39

标签: python pygame

我正在制作一个程序,我想在不丢失内容的情况下重新调整窗口大小。从某种意义上说,我想裁剪窗户。如果内容被截止,则可以。这是我想要做的:

from pygame import *
main = display.set_mode((800,600))
main.fill((255,255,255))
running = True
while running:
    mx, my = mouse.get_pos()
    mb = mouse.get_pressed()
    for e in event.get():
        if e.type == QUIT:
            running = False
    if mb[0] == 1:
        draw.circle(main, (102,204,102), (mx, my), 10)
    elif mb[2] == 1:
        main = display.set_mode((200,200))
    display.flip()
quit()

当我更改屏幕时,它不会显示我在屏幕上绘制的内容。当我更改屏幕尺寸时,如何保留内容并“裁剪”内容?感谢。

2 个答案:

答案 0 :(得分:0)

实际上这是不可能的。模块将只创建一个新屏幕并删除旧屏幕,包括圆圈。我已经尝试了几个小时但是pygame文档只列出了创建和删除屏幕的模块。所以很不幸的是,你不能在不删除原有屏幕和制作新屏幕的情况下改变屏幕尺寸。

答案 1 :(得分:0)

首先,由于您希望重新调整屏幕大小,因此请确保在初始化屏幕时添加RESIZABLE标记。

main = display.set_mode((800,600), RESIZABLE, 32)

初始化时,您的窗口将变得重新调整大小。但现在,您可以通过每次调整屏幕大小时发送的VIDEORESIZE事件来访问新屏幕大小。

for e in event.get():
    if e.type == QUIT:
        running = False
    if e.type == VIDEORESIZE:
        print e.w, e.h, e.size


现在您可以看到新的窗口尺寸。我还建议删除

elif mb[2] == 1:
    main = display.set_mode((200,200))

因为它只创建一个新屏幕,而不是调整它。它不会起作用。