pygame学习笔记(四)色彩与绘图机制

四、pygame的色彩与绘图机制

1、pygame绘图原理

首先明白,我们的绘图都是在主图层的基础上而主图层,是由
pygame.display.setmode()生成的surface对象
不绘制在主图层的图像,将不会被显示。
接下来理解pygame绘图的两个类型

pygame.surface
绘图层、绘图平面
用于表示图形、文字和图像的绘制效果
与当前屏幕主图层可以并列存在
如果不绘制在主图层,则不会被显示

pygame.rect
矩形区域
对应于当前主图层的某个具体区域
相当于某个矩形区域的指针或标识信息
可以指定图层绘制在某个矩形区域中

在主图层上绘制其他图层是,需要使用
.blit(pygame.surface,pygame.rect)的方法。

2、pygame色彩机制

pygame.color()
color类用来表达色彩,使用RGB或RGBA色彩模式
color类可以用色彩名字、RGBA值,HTML色彩格式等方式定义
例如:

color(name)color(“red”)
color(r,g,b,a)color( 102,204,255,255)
color(rgbvalue)color(#66CCFF)

其中RGBA中的A为alpha通道,表示不透明度,取值范围为0-255,默认为255
alpha通道值越大,不透明度越高
pygame.color类

pygame.color.r获得color类的红色值r
pygame.color.g获得color类的绿色值g
pygame.color.b获得color类的蓝色值b
pygame.color.a获得color类的alpha值a
pygame.color.normalize将RGBA个通道值归一到0-1之间

3、图像的绘制机制

pygame.draw

一个图形绘制后,会返回一个矩形rect类表示该形状。

pygame.rect

表达一个矩形区域的类,用于存储坐标和长度信息 Pygame利用Rect类来操作图形/图像等元素

pygame.Rect 四个参数如下: left, top, width, height

Rect类提供了如下属性,返回一个数值或一个代表坐标的元组 x, y, w, h, size, width, height top, left, bottom, right topleft, bottomleft, topright, bottomright midtop, midleft, midbottom, midright center, centerx, centery

Rect类提供了如下方法,用来操作Rect类 .copy(), .move(), .inflate(), .clamp(), .clip(), .union(), .unionall(), .fit(), .normalize(), .contains(), .collidepoint() .colliderect(), .collidelist(), .collidelistall(), .collidedict(), .collidedictall()

图形绘制:

图形绘制方法
矩形pygame.draw.rect(Surface, color, Rect, width=0)
多边形pygame.draw.polygon(Surface, color, pointlist, width=0)
圆形pygame.draw.circle(Surface, color, pos, radius, width=0)
椭圆形pygame.draw.ellipse(Surface, color, Rect, width=0)
椭圆弧形pygame.draw.arc(Surface, color, Rect, start_angle,stop_angle, width=0)
直线pygame.draw.line(Surface, color, start_pos, end_pos, width=1)
连续多线pygame.draw.lines(Surface, color, closed, pointlist, width=1)
无锯齿线pygame.draw.aaline(Surface, color, start_pos, end_pos, blend=1)
连续无锯齿线pygame.draw.aalines(Surface, color, closed, pointlist, blend=1)

补充:
矩形

pygame.draw.rect(Surface, color, Rect, width=0)
• Surface 矩形的绘制屏幕
• color 矩形的绘制颜色
• Rect 矩形的绘制区域
• width=0 绘制边缘的宽度,默认为0,即填充图形

多边形

pygame.draw.polygon(Surface, color, pointlist, width=0)
• Surface 多边形的绘制屏幕
• color 多边形的绘制颜色
• pointlist多边形顶点坐标列表
• width=0 绘制边缘的宽度,默认为0,即填充图形

圆形

pygame.draw.circle(Surface, color, pos, radius, width=0)
• Surface 圆形的绘制屏幕
• color 圆形的绘制颜色
• pos 圆形的圆心坐标
• radius 圆形的半径
• width=0 绘制边缘的宽度,默认为0,即填充图形

椭圆形

pygame.draw.ellipse(Surface, color, Rect, width=0)
• Surface 椭圆形的绘制屏幕
• Color 椭圆形的绘制颜色
• Rect 椭圆形的绘制区域
• width=0 绘制边缘的宽度,默认为0,即填充图形

椭圆弧形

pygame.draw.arc(Surface, color, Rect, start_angle,stop_angle, width=0)
• Surface 椭圆弧形的绘制屏幕
• Color 椭圆弧形的绘制颜色
• Rect 椭圆弧形的绘制区域
• start_angle, stop_angle 弧形绘制起始和结束弧度值
• width=0 绘制边缘的宽度,默认为0,即填充图形

直线

pygame.draw.line(Surface, color, start_pos, end_pos, width=1)
• Surface 直线的绘制屏幕
• Color 直线的绘制颜色
• start_pos, end_pos 直线的起始和结束坐标
• width=1 直线的宽度,默认值为1

连续多线绘制

pygame.draw.lines(Surface, color, closed, pointlist, width=1)
• Surface 连续多线的绘制屏幕
• Color 连续多线的绘制颜色
• closed 如果为True,起止节点间自动增加封闭直线
• pointlist连续多线的顶点坐标列表
• width=1 连续多线的宽度,默认值为1

无锯齿线

pygame.draw.aaline(Surface, color, start_pos, end_pos, blend=1)
• Surface 无锯齿线的绘制屏幕
• Color 无锯齿线的绘制颜色
• start_pos, end_pos 无锯齿线的起始和结束坐标
• blend=1 不为0时,与线条所在背景颜色进行混合

连续无锯齿线

pygame.draw.aalines(Surface, color, closed, pointlist, blend=1)
• Surface 连续无锯齿线的绘制屏幕
• Color 连续无锯齿线的绘制颜色
• closed 如果为True,起止节点间自动增加封闭直线
• pointlist连续无锯齿线的顶点坐标列表
• blend=1 不为0时,与线条所在背景颜色进行混合

4、文字绘制机制

pygame.freetype

向屏幕上绘制特定字体的文字

文字不能直接Print(),而是用像素根据字体点阵图绘制

pygame.freetype使用时需要额外import引用

pygame.freetype.Font(file,size=0)
根据字体和字号产生一个FONT对像
·file 表示字体类型名称或字体路径
·size 表示字体的大小
用FONT对象的render*方法绘制具体文字
①Font.render_to()

Font.render_to(surf, dest, text, fgcolor=None,
bgcolor=None, rotation=0, size=0)> Rect

surf 绘制字体的平面,Surface对象
• dest 在平面中的具体位置,(x,y)
• text 绘制的文字内容
• fgcolor 文字颜色
bgcolor 背景颜色
• rotation 逆时针的旋转角度,取值0-359,部分字体可旋转
• size 文字大小,赋值该参数将覆盖Font中的设定值
Rect 返回一个Rect对象

②Font.render()

Font.render(text, fgcolor=None, bgcolor=None,
rotation=0, size=0)> (Surface, Rect)
• text 绘制的文字内容
• fgcolor, bgcolor 字体颜色、背景颜色
• rotation 逆时针的旋转角度,取值0-359,部分字体可旋转
• size 文字大小,赋值该参数将覆盖Font中的设定值
返回一个元组,包含Surface对象和Rect对象

附学习链接:http://www.icourse163.org/course/BIT-1001873001

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值