一、绘制图形
绘制圆形
pygame.draw可以用来绘制不同的形状,pygame.draw.cirle()可以用来绘制圆
需要的参数分别为:
- 承载圆形的Surface对象
- 颜色
- 圆心的X、Y坐标两个整数存入一个元组中
- 圆的半径
- 线条宽度,默认为0
import sys import pygame from pygame.locals import * # 创建窗口参数 # 窗口大小 win_size = (1000, 500) win = pygame.display.set_mode(win_size) pygame.init() # 窗口背景颜色 bg_color = (120, 120, 255) while True: for event in pygame.event.get(): if event.type in (QUIT, K_ESCAPE, KEYDOWN): sys.exit() win.fill(bg_color) '''开始绘制圆形''' # 定义圆的参数 # 线条颜色 color = (255, 255, 0) # 线条宽度 width = 5 # 圆心的位置 position = (500, 250) # 半径 radius = 100 # 绘制圆 pygame.draw.circle(win, color, position, radius, width) '''结束绘制圆形''' pygame.display_setcaption('圆形的绘制') # 刷新窗口 pygame.display.update() 复制代码
如果将线条宽度改为和半径一样,就变成了一个实体圆
绘制弧形
绘制弧形的步骤与绘制圆形的步骤是一样的,只不过绘制弧形需要使用到pygame.draw.arc()函数
需要传入的参数为:
- 承载弧形的Surface对象
- 弧形的颜色
- 矩形左上角的X,Y坐标以及宽和高
- 开始角度
- 结束角度 这里需要传入角度值,因此需要导入math模块,参考上面创建圆形的代码,创建和设置窗口的代码是不变的,因此只需要将创建圆形的代码替换为创建弧形的代码即可
创建pygame_draw_arc.py文件,将创建圆形代码块替换,从win.fill(bg_color)
代码开始
'''开始绘制弧形''' arc_color = (255, 0, 255) # 以矩形为基准距离左,上,下,由的距离 position = (400, 200, 200, 200) start_angle = math.radians(0) end_angle = math.radians(180) width = 5 pygame.draw.arc(win, arc_color, position, start_angle, end_angle, width) # 设置窗口标题 pygame.display.set_caption('弧形的绘制') '''结束绘制弧形''' 复制代码
到pygame.display.update()
代码前结束
绘制简单的椭圆
一个椭圆由上下两半部分弧形组成,因此只需要绘制两个弧形,将角度替换并往下平移,即可组成一个椭圆
'''开始椭圆上半部分''' arc_color = (255, 0, 255) # 以矩形为基准距离左,上,下,由的距离 position = (400, 100, 100, 200) start_angle = math.radians(0) end_angle = math.radians(180) width = 5 pygame.draw.arc(win, arc_color, position, start_angle, end_angle, width) '''开始绘制椭圆下半部分''' arc_color = (255, 0, 255) # 以矩形为基准距离左,上,下,由的距离 position = (400, 100, 100, 200) start_angle = math.radians(180) end_angle = math.radians(0) width = 5 pygame.draw.arc(win, arc_color, position, start_angle, end_angle, width) 复制代码
当然也可以使用绘制椭圆的函数pygame.draw.ellipse()
绘制椭圆
椭圆的绘制需要用到pygame.draw.ellipse()函数
传递的参数分别为:
- 承载椭圆的Surface对象
- 椭圆的颜色
- 椭圆(矩形)左上角X坐标和Y坐标,以及椭圆(矩形)的宽和高4个整数存入一个元组中
- 宽度,可选
'''绘制椭圆''' width = 5 # 左上角的XY坐标以及宽和高 rect = (400, 100, 200, 300) color = (255, 255, 255) pygame.draw.ellipse(win, color, rect, 1) pygame.display.set_caption('椭圆的绘制') 复制代码
绘制多边形
pygame.draw.polygon()函数可以绘制多边形
包含了以下参数
- 承载多边形的Surface对象
- 多边形的颜色
- 多边形连线的点的XY坐标构成的元组,最后一个元组将自动连接到第一个元组已完成多边形的形状
- 线条的宽度,可选项
win.fill(window_surface_color) color = (255, 255, 0) # 绘制多边形 pygame.draw.polygon(win, color, ((400, 250), (291, 106), (236, 277), (56, 277), (200, 106))) pygame.display.set_caption('多边形的绘制') 复制代码
绘制一个移动的矩形
要绘制移动的图形只要不断变换图形的位置即可实现,pygame中可以使用pygame.draw.rect()函数可以绘制矩形 rect()函数需要以下参数 承载矩形的Surface对象,既窗口 矩形的颜色 矩形左上角XY坐标,以及矩形的宽和高,存入一个元组中
import sys import pygame from pygame.locals import * # 创建窗口参数 # 窗口大小 win_size = (1000, 500) win = pygame.display.set_mode(win_size) win.get_rect() font = pygame.font.Font(None, 60) pygame.init() # 窗口标题内容 pygame.display.set_caption('绘制移动的矩形') bg_color = (120, 120, 255) # 矩形位置和移动变量 pos_x = 200 pos_y = 200 vel_x = 2 vel_y = 1 while True: for event in pygame.event.get(): if event.type in (QUIT, K_ESCAPE, KEYDOWN): sys.exit() win.fill(bg_color) # 线条颜色 color = (255, 255, 0) # 线条宽度 width = 5 # 矩形左上角XY坐标以及宽和高 pos = pos_x, pos_y, 100, 100 # 绘制矩形 pygame.draw.rect(win, color, pos, width) # 移动矩形 pos_x += vel_x # pos_y += vel_y # 刷新窗口 pygame.display.update() 复制代码