python3 pygame学习(3):pygame.Surface

来源:互联网 发布:排序算法及时间复杂度 编辑:程序博客网 时间:2024/06/05 00:14

上面我们说到pygame.image.load()返回的其实是一个surface对象,而pygame中专门有一个Surface类,并且这个类中还有许多的方法。


pygame.surface.blit 画一个图像到另一个
pygame.surface.convert 改变图片的像素格式
pygame.surface.convert_alpha 改变图像的每个像素的像素格式包括阿尔法
pygame.surface.copy 创建一个新的表面复制
pygame.surface.fill 表面用纯色填充
pygame.surface.scroll 在地方的表面形象转换
pygame.surface.set_colorkey 设置透明色键
pygame.surface.get_colorkey 获取当前透明色键
pygame.surface.set_alpha 设置为全表面图像的alpha值
pygame.surface.get_alpha 获取当前表面透明度值
pygame.surface.lock 像素访问表面内存锁
pygame.surface.unlock 从像素的访问解锁记忆
pygame.surface.mustlock 测试如果表面需要锁定
pygame.surface.get_locked 测试如果表面电流锁定
pygame.surface.get_locks 获取表面的锁
pygame.surface.get_at 在单个像素的颜色值的获得
pygame.surface.set_at 设置为一个像素的颜色值
pygame.surface.get_at_mapped 在一个单一的像素颜色值的映射
pygame.surface.get_palette 得到一个8位的表面颜色索引调色板
pygame.surface.get_palette_at 得到在调色板的颜色单一入口
pygame.surface.set_palette 对于一个8位的表面设置的调色板
pygame.surface.set_palette_at 设置在一个8位面单索引的颜色调色板
pygame.surface.map _ RGB 将一个颜色映射的颜色值
pygame.surface.unmap_rgb 将一个整数的颜色值映射成一个颜色
pygame.surface.set_clip 设置当前剪辑区域的表面
pygame.surface.get_clip 获取当前剪辑区域的表面
pygame.surface.subsurface 创建一个新表,参考其母
pygame.surface.get_parent 找到一个地下的父母
pygame.surface.get_abs_parent 找到一个地下的顶级父
pygame.surface.get_offset 发现在父母的孩子地下的位置
pygame.surface.get_abs_offset 发现在其最高水平的孩子地下的绝对位置
pygame.surface.get_size 得到表面的尺寸
pygame.surface.get_width 得到表面的宽度
pygame.surface.get_height 得到表面高度
pygame.surface.get_rect 得到表面的矩形区域
pygame.surface.get_bitsize 得到表面的像素格式的位深度
pygame.surface.get_bytesize 习惯每面像素字节
pygame.surface.get_flags 用于表面附加标志
pygame.surface.get_pitch 得到每面行的字节数
pygame.surface.get_masks 该掩码需要颜色和映射的整数之间的转换
pygame.surface.set_masks 组需要一种颜色和一个映射的整数之间的转换的掩码
pygame.surface.get_shifts 位的变化需要一种颜色和一个映射的整数之间的转换
pygame.surface.set_shifts 设置位移所需颜色和映射的整数之间的转换
pygame.surface.get_losses 有位用于颜色和映射的整数之间的转换
pygame.surface.get_bounding_rect 找到最小的矩形包含数据
pygame.surface.get_view 返回一个表面的像素缓存视图。
pygame.surface.get_buffer 获取表面的像素缓冲区对象。
_pixels_address pygame。表面。 像素缓冲区地址


blit,convert,convert_alpah,这几个比较有印象吧!

这里我们着重介绍一下blit,fill。

我们在写一个简单的窗口程序。


创建一个600x400的窗口

screen=pygame.display.set_mode((600,400),0,32)


为窗口填充颜色
screen.fill(color=(255,255,0))
fill填充颜色必须使用RGB颜色序列例如(255,0,0)是红色,(255,255,0)是黄色等。


完整代码

# -*- conding:utf-8 -*-import pygameimport syspygame.init()screen=pygame.display.set_mode((600,400),0,32)while True:for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()screen.fill(color=(255,255,0))pygame.display.update()

运行效果


这里着重讲一下  for event in pygame.event.get()

这是一个实施事件循环,该循环会创建当前等待处理的事件的一个列表,然后使用for循环来遍历里面的事件。这样,我们将会根据事件产生的顺序依次地进行不同的操作。常见的事件是按键按下,按键释放以及鼠标移动。通常需要最先处理QUIT事件(在用户关闭窗口的时候会产生该事件。)

如果不加这个事件循环的话,那么窗口程序运行会出现一点卡顿的现象(ps在我的电脑上!)

原创粉丝点击