pygame.display.list_modes() #返回本機所支持的窗口大小--列表
[(1920, 1080), (1680, 1050), (1600, 900), (1440, 900), (1400, 1050), (1366, 768), (1360, 768), (1280, 1024), (1280, 960), (1280, 800), (1280, 768), (1280, 720), (1280, 600), (1152, 864), (1024, 768), (800, 600), (640, 480), (640, 400), (512, 384), (400, 300), (320, 240), (320, 200)]
練習:通過F1鍵在滿屏和窗口之間進行切換
import pygame pygame.init() #游戲初始化的設置,他應該在游戲代碼編寫的最前邊 screen = pygame.display.set_mode((960, 600)) #創建窗口以進行顯示;screen定義了一個游戲的屏幕,后續游戲場景中的游戲對象,都要在這個screen上繪制 #參數一:640和480是寬度和高度 #參數二:標志位:具體意思見下表,如果不用什么特性,就指定0 # 0 用戶設置的窗口大小
# pygame.FULLSCREEN 創建一個全屏窗口 # pygame.DOUBLEBUF 創建一個“雙緩沖“窗口,建議在HWSURFACE或OPENGL時使用 # pygame.HWSURFACE 創建一個硬件加速窗口,必須和FULLSCREEN同時使用 # pygame.OPENGL 創建一個OPENGL渲染的窗口 # pygame.RESIZABLE 創建一個可以改變大小的窗口 # pygame.NOFRAME 創建一個沒有邊框的窗口 #參數三:色深 pygame.display.set_caption("窗口大小變換") #設置當前游戲窗口的標題 fullscreen = False background =pygame.image.load('2.jpg') #加載圖片 while True: for event in pygame.event.get(): #pygame.event.get() 游戲中的事件 if event.type == pygame.QUIT: #如果事件類型是退出 exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_F1: fullscreen = not fullscreen if fullscreen: screen = pygame.display.set_mode((960, 600), pygame.FULLSCREEN) else: screen = pygame.display.set_mode((960, 600), 0) screen.blit(background, (0, 0)) #把圖片加到窗口 pygame.display.update() #更新窗口
import pygame pygame.init() SCREEN_SIZE = (640, 480) screen = pygame.display.set_mode(SCREEN_SIZE,pygame.RESIZABLE) pygame.display.set_caption("窗口大小變換") fullscreen = False background =pygame.image.load('2.jpg') while True: for event in pygame.event.get(): if event.type == pygame.QUIT: exit() if event.type == pygame.VIDEORESIZE: #如果窗口大小發生了變化 SCREEN_SIZE=event.size #返回當前窗口大小--元組(寬,高) print(event.size) screen = pygame.display.set_mode(SCREEN_SIZE, pygame.RESIZABLE) pass screen.blit(background, (0, 0)) pygame.display.update()
如果你想創建一個硬件顯示(surface會存放在顯存里,從而有着更高的速度),但必須和全屏一起用:
screen = pygame.display.set_mode(SCREEN, HWSURFACE | FULLSCREEN)
當然你完全可以把雙緩沖(更快)DOUBLEBUF也加上,這就是一個很nice的游戲顯示了,不過記得你要使用pygame.display.flip()來刷新顯示。pygame.display.update()是將數據畫到前面顯示,而這個是交替顯示的意思
稍微說一下雙緩沖的意思,可以做一個比喻:我的任務就是出黑板報,如果只有一塊黑板,那我得不停的寫,全部寫完了稍微Show一下就要擦掉重寫,這樣一來別人看的基本都是我在寫黑板報的過程,看到的都是不完整的黑板報;如果我有兩塊黑板,那么可以掛一塊給別人看,我自己在底下寫另一塊,寫好了把原來的換下來換上新的,這樣一來別人基本總是看到完整的內容了。雙緩沖就是這樣維護兩個顯示區域,快速的往屏幕上換內容,而不是每次都慢慢地重畫。
還有OPENGL模式,這是一個得到廣泛應用的3D加速顯示模式。不過一旦使用了這個模式,pygame中的2D圖像函數就不能使用了
screen.fill((255,255,255)) #用指定顏色填充窗口