pygame之surface

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写到循环中

运行后效果如下:
在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值