栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

《零基础入门python游戏》第二章-3学习心得

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

《零基础入门python游戏》第二章-3学习心得

Surface定义

Surface是一块矩形显示区域,用来显示任意图像,具有固定的宽、高、像素格式。粗略可以理解为画布,可以在上面绘制图像。此外还可以将一个Surface作为图像复制到另一个Surface上。在第二章-2中提到的pygame.display.set_mode()实际上就是创建了一个display surface对象

创建surface
  • 通过pygame.display.set_mode()函数创建display surface(该surface是一个特殊的surface对象)
  • 通过pygame.image.load()返回的image surface创建surface对象
  • 通过Surface类的构造函数创建Surface对象
Surface((width,height),flag=0,depth=0,masks=None)
Surface((width,height),flags=0,Surface)

注:默认创建一个空Surface,内部所以像素初始化为黑色,构造函数的多个参数中,只有分辨率即表示宽高的二元组必须指定,其余可不做指定

  • 通过pygame.font.Font.render()创建对象——在显示文字时候用到
绘制Surface
  • fill(color,rect=None,special_flags=0)——指定填充颜色,color表示带填充颜色的RGB或RGBA值,该值为一个三元组或四元组,第二个参数代表颜色填充的目标区域,不指定则填充整个surface,第三个涉及更多高级特性,书中未做介绍。
  • blit(sourface,dest,area=None,special_flags=0)——用于将一个Surface对象复制到另一个Surface对象上。第一个参数是源surface对象,即要复制的surface对象。第二个参数未待绘制区域的左上角坐标可以取值一个点的坐标,也可以取Rect对象,取Rect对象时,起关键作用的将是矩形的左上角坐标。第三个参数代表源Surface中需要绘制的区域当需要部分复制时候该参数起作用。只有前两个参数在使用时必须指定
转换surface像素格式
  • convert()——把当前surface转换成与屏幕surface一致的像素格式,返回值未转换后的surface对象(不适用于带透明效果的图片)
  • convert_alpha()——与convert效果相同,但其适用于带透明效果的图片
获取surface的属性
  • get_width()——获取surface的宽度,单位为像素(pixel)
  • get_height()——获取surface的高度,单位为像素(pixel)
  • get_size()——获取surface的尺寸,返回的是一个二元组(width,height),单位为pixel
  • get_rect(**kwargs)——获取surface所在的矩形区域,返回值为一个与surface宽高相等的Rect对象。
案例
# 引入相关模块
import pygame,sys
# 函数声明与定义
def main():
    # 初始化
    pygame.init()
    # 设置窗口大小
    a=pygame.display.set_mode((400,300))
    icon=pygame.image.load("2.ico").convert()
    # 填充背景色为白色
    a.fill((255,255,255))
    #绘制到display surface上
    a.blit(icon, (100,100))
    c=a.get_size()
    # 主循环
    while True:
        for event in pygame.event.get():
            print(c)
            if event.type == pygame.QUIT:
                # 用户点击叉号结束
                pygame.quit()
                sys.exit()
        # 刷新窗口页面
        pygame.display.flip()


if __name__=='__main__':
    # 调用函数
	main()
#注:该代码仅做演示实际操作中不建议把print写到循环中

运行后效果如下:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/951905.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号