图形绘制——pygame.draw模块
1.直线的绘制
#绘制直线
pygame.draw.line(Surface,color,start_pos,end_pos,width=1)
#抗锯齿版本直线
pygame.draw.aaline(Surface,color,start_pos,end_pos,blend=1)
各个参数解释:
- Surface可以理解为该直线完毕显示在哪个surface上
- color直线的颜色,为RGB三元组或RGBA四元组
- start_pos,end_pos分别为直线的起点坐标和终点坐标均为二元组
- width为直线的宽度,默认为1
- blend为是否打开直线边缘的融合效果,一般不对其设置使用其默认值
2.折线的绘制
#绘制折线
pygame.draw.lines(Surface,color,closed,pointlist,width=1)
#抗锯齿折线
pygame.draw.aalines(Surface,color,closed,pointlist,blend=1)
各个参数解释:
- Surface即要把折线绘制到哪个surface对象上
- color为折线的颜色,为三元组或四元组
- closed表示折线是否封闭,如果为True则pointlist中的第一个点会和最后一个点连接起来
- pointlist表示所有构成点的坐标的列表
注意:在给定该参数列表时应用()包裹即:
((a,b),(b,c),(c,d))
- width表示折线宽度,数值越大,折线越粗
- blend表示是否打开直线边缘的融合效果,一般选用默认值
3.矩形绘制
#矩形绘制
pygame.draw.rect(Surface,color,Rect,width=0)
各参数解释:
- Surface即在哪个Surface绘制矩形
- color为矩形颜色的RGB值或RGBA值
- Rect表示绘制的矩形区域,可以是四元组,也可以为Rect对象
注:四元组(a,b,c,d)其中a,b,c,d分别代表左上角横坐标,左上角纵坐标,矩形宽,矩形高
- width为0时,整个区域被color填充,不为0则color只填充边框
4.多边形绘制
#多边形绘制
pygame.draw.polygon(Surface,color,pointlist,width=0)
各参数解释:
- Surface为在哪个surface上绘制多边形
- color为多边形颜色
- pointlist为各个顶点的坐标,记得书写时用()包裹
- width为多边形边的宽度,与矩形相同width为0时,填充多边形内整个区域
5.圆形绘制
#圆形绘制
pygame.draw.circle(Surface,color,pos,radius,width=0)
各参数解释:
- Surface即在哪个Surface上绘制圆形
- color为圆形颜色
- pos为圆心坐标为一个二元组
- radius为圆的半径
- width为圆形弧线的宽度为0填充整个圆形区域
6.椭圆绘制
#椭圆绘制
pygame.draw.eclipse(Surface,color,Rect,width=0)
各参数解释:
- Surface即要在哪个Surface上绘制椭圆
- color为填充颜色
- Rect为椭圆的外接矩形,具体参照矩形绘制
- width为椭圆弧线的宽度,为0填充整个椭圆
7.弧线绘制
#弧线绘制,简单介绍一下思路弧线的绘制实质上是截取椭圆的部分线段
pygame.draw.arc(Surface,color,Rect,start_angle,stop_angle,width=1)
各参数解释:
- Surface为要在哪个Surface上绘制椭圆
- color为填充颜色
- Rect为弧线所属椭圆的外接矩形
- start_angele代表椭圆的初始弧度,stop_angle代表椭圆的终止弧度
注:start_angle与stop_angle的单位都为弧度,典型取值范围为[0,2π]
- width为弧线的宽度默认为1
8.具体实例
# 引入相关模块
import pygame,sys
# 函数声明与定义
def main():
# 初始化
pygame.init()
# 设置窗口大小
a=pygame.display.set_mode((800,700))
# 填充背景色为白色
a.fill((255,255,255))
# 主循环
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
# 用户点击叉号结束
pygame.quit()
sys.exit()
# 绘制直线
pygame.draw.line(a,(0,255,0),(0,10),(200,10),1)
# 绘制抗锯齿版本直线
pygame.draw.aaline(a,(0,255,0),(0,20),(200,20))
# 绘制折线
pygame.draw.lines(a,(0,255,0),True,((0,40),(30,30),(40,40)),1)
# 抗锯齿版本
pygame.draw.aalines(a,(0,255,0),True,((40,40),(80,30),(80,40)),1)
# 绘制矩形
pygame.draw.rect(a,(0,255,0),(0,60,100,200),0)
# 绘制多边形
pygame.draw.polygon(a,(0,255,0),((200,0),(180,90),(80,90),(200,190)),0)
# 圆形绘制
pygame.draw.circle(a,(0,0,0),(200,200),9)
# 椭圆绘制
pygame.draw.ellipse(a,(255,0,0),(0,60,100,200))
# 弧线绘制
pygame.draw.arc(a,(0,0,0),(400,500,200,400),0,3/2)
# 刷新窗口页面
pygame.display.flip()
if __name__=='__main__':
# 调用函数
main()
运行效果如下:
注:因为坐标点计算太过痛苦,所以导致了部分绘制聚集部分绘制分散望见谅