Pygame 如何进行全屏显示
author: 刘敏 EMAIL:liumin3000@gmail.com Date:2008-10-23
Pygame全频显示要做好全频显示需要知道下面3个方法:
Pygame.display.set_mode(resolution,flags=0,depth=0): return Surface
Pygame.display.list_modes(depth=0,flags=pygame.FULLSCREEN):return list
pygame.display.set_mode(resolution, flags=0, depth=0): return Surface |
这个函数会创建一个display Surface。 参数用来指定请求display的类型。实际创建的display会是系统支持的类型中与请求的尽可能一致的类型。
1 resolution(分辨率)参数是一对数表示宽度和高度
2 flags参数是显示模式(一组选项的集合)
- pygame.FULLSCREEN 创建全屏的
- display pygame.DOUBLEBUF 使用HWSURFACE或OPENGL时建议加上这个标志
- pygame.HWSURFACE 使用硬件加速,只在FULLSCREEN时有效
- pygame.OPENGL 创建一个可以使用opengl的display
- pygame.RESIZABLE display的窗口可变大小
- pygame.NOFRAME display的窗口没有边框和控制条
3 depth参数表示颜色的位数 你也可以添其他的,常见的有:
- 8 bits 256 色
- 15 bits 32,768 色
- 16 bits 65,536 色
- 24 bits 16.7 百万色
- 32 bits 16.7 百万色
4 返回Surface,Surface和普通一样使用,但是这个Surface上的东西会最终在显示器上看到。
1 #!/usr/local/bin/python
2 background_image_filename = 'bg.jpg' #600x600px
3 mouse_image_filename = 'cat.jpg' #128x160px
4
5 #初始化程序
6 import pygame
7 from pygame.locals import *
8 from sys import exit
9 pygame.init()
10
11 screen = pygame.display.set_mode((1024, 768), FULLSCREEN, 32)
12 background = pygame.image.load(background_image_filename).convert() #加载背景图片
13 mouse_cursor = pygame.image.load(mouse_image_filename).convert_alpha()#加载更随鼠标图片
14
15 while True:
16 #按q键退出程序
17 for event in pygame.event.get():
18 if event.type == KEYDOWN:
19 if event.key==K_q:
20 exit()
21 screen.blit(background, (0,0))
22 x, y = pygame.mouse.get_pos() #获取鼠标坐标
23 screen.blit(mouse_cursor, (x, y))
24 pygame.display.update()
该 例子的是用一张图片作为背景,一张图片更随鼠标运动,按q键退出 注意: depth参数默认情况下会自动选择当前系统最好和最快的颜色深度,但画质会降低。如果你的游戏需要特定的颜色格式,你可以使用这个参数来控制颜色深度, 但速度会减慢。当请求全屏显示模式时,请求的分辨率有时不能够被精确匹配。在这种情况下,pygame会选择最接近的兼容模式设置显示分辨率(你把实例的 分辨率该为320x240,看看效果)。而返回的Surface仍然匹配请求的分辨率。flags有多种选项可以选择,你可以使用位或运算("|")来组 合它们。如果传入0或者不指定flags参数,会自动使用默认值。
pygame.display.list_modes(depth=0, flags=pygame.FULLSCREEN): return list |
这个函数返回一个指定颜色深度的所有可用的分辨率的列表。
如 果给定的参数没有显示模式可用,那么会返回一个空的列表,列表中的模式按照分辨率从大到小排列。 如果返回-1表示任何分辨率都可以用(这可能是因为指定的是窗口模式)。如果depth是0,SDL会自动选择当前或最好的颜色深度。flags参数默认 是pygame.FULLSCREEN,你可以添加额外的选项。
1 #!/usr/local/bin/python
2 import pygame
3 pygame.init()
4 print pygame.display.list_modes()
该例子打印可用的分辨率
Pygame.display.mode_ok(size,flags=0,depth=0): return depth |
选择一个最好的颜色深度
这 个函数使用和pygame.display.set_mode相同的参数。它用来确定请求的模式是否可用。如果指定的模式不能使用,它会返回0,否则它会 返回一个最佳的颜色深度,通常depth参数不会被使用。然而某些平台上支持多种颜色深度都同样好,传递这个参数用来指定哪个是更好的。最有用的 flags是pygame.HWSURFACE、pygame.DOUBLEBUF和pygame.FULLSCREEN。如果被请求的flags不能够 设置,函数会返回0。
1 #!/usr/local/bin/python
2 import pygame
3 pygame.init()
4 print pygame.display.mode_ok((800,600),FULLSCREEN)
我的打印的是(大多数)32
我们怎么设置set_moke()中depth参数才不会出问题呢?
1 floge = FULLSCREEN
2 bestdepth = pygame.display.mode_ok((with,heith),floge)#传入分辨率with,heith返回这个分辨率在本机上最好的颜色深度
3 srceen = pygame.display.set_mode((with,heigh),folge,bestdepth)# That’s OK!
资料来源于:
《Beginning Game Development with Python and Pygame》
763




被折叠的 条评论
为什么被折叠?



