我正在制作一个程序,我想在不丢失内容的情况下重新调整窗口大小。从某种意义上说,我想裁剪窗户。如果内容被截止,则可以。这是我想要做的:
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()
当我更改屏幕时,它不会显示我在屏幕上绘制的内容。当我更改屏幕尺寸时,如何保留内容并“裁剪”内容?感谢。
答案 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))
因为它只创建一个新屏幕,而不是调整它。它不会起作用。