2014-12-26 44 views
0

我在製作程序,並且希望重新調整窗口的大小而不會丟失內容。從某種意義上說,我想裁剪窗口。如果內容被截斷,則可以。這是我想要做的:在不丟失內容的情況下更改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() 

當我改變屏幕,它不顯示我畫在屏幕上。如何更改屏幕尺寸時保留內容並「剪裁」內容?謝謝。

+0

您是否想從右側和底部裁剪內容? – pts

+0

只是從底部。我在上面的例子中使用了兩個,但這不是我的實際程序。我只想調整底部的高度 – sirvar

+0

您不應該使用'main = display.set_mode'。它只會創建另一個屏幕,而不會縮小屏幕。 –

回答

0

這實際上是不可能的。這些模塊只會創建一個新屏幕並刪除舊屏幕,包括圈子。我一直在嘗試幾個小時,但pygame文檔只列出了創建和刪除屏幕的模塊。所以不幸的是,如果不刪除舊的並創建新的屏幕,您將無法更改屏幕的大小。

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)) 

因爲它只創建一個新的屏幕,而不是調整它。它不會工作。

+0

您是否特意將200x200作爲您的屏幕尺寸?或者它可以是「動態的」? – SirBob

+0

我希望它在單擊按鈕時基本上在兩種屏幕尺寸之間切換。我沒有在我的代碼中顯示,但在我的實際程序中,我這樣做。所以以SirBob的例子來說,我怎麼能改變大小,而不是用戶呢? – sirvar

相關問題