一、导入和保存图片
pygame.image模块包含加载和保存图片的功能,导入的图片实际上就是一个Surface对象,那么可以使用Surface的各种方法。image最重要的两个方法:
load(filename):打开一个图片文件
save(Surface, filename):保存Surface到文件
Pygame会自动确定图像类型,并将导入的图像创建一个Surface对象。这个对象包含和源文件相同的颜色格式、颜色键和透明度,同时建议调用Surface.convert()方法,这样可以加快在屏幕上绘制。使用convert_alpha()转换,以便让图像具有每个像素的透明度。
load函数可以打开的文件格式有:BMP、非动态的GIF、JPEG、LBM、PCX、PNG、PNM、SVG、TGA、TIFF、WEBP、XPM。常用的是其中三个粉色的图片格式,尤其是透明背景的PNG图像,在游戏中使用特别多。
save函数支持的文件格式:BMP、JPEG、PNG和TGA。
其他函数可以参考官网:
https://www.pygame.org/docs/ref/image.html
实例1:导入图片和保存图片
import pygame
import sys
pygame.init()
WHITE = (255, 255, 255)
size = [800, 800]
screen = pygame.display.set_mode(size)
screen.fill(WHITE)
pygame.display.set_caption("image类")
clock = pygame.time.Clock()
mokey = pygame.image.load("./resource/picture/苹果.png")
mokey_rect = mokey.get_rect()
pygame.image.save(mokey, "./resource/picture/苹果_2.bmp")
while True:
clock.tick(10)
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit(0)
mokey_rect.center = (400, 400)
screen.blit(mokey, mokey_rect)
pygame.display.flip()
pygame.quit()
效果:
二、绘制图形
pygame.draw模块是用于绘制简单的几何图形,这些绘制函数有以下特征:
大部分函数都包含width参数来描述画笔的粗细,0表示填充图形
所有的几何图形都被一个矩形区域包住,会返回一个Rect对象
全部函数都接受一个color(颜色)参数,可以是
pygame.Color对象
RBG三元组或RGBA四元组
一个映射到surface像素格式的整数,pygame.Surface.map_rgb()
第一个参数都是Surface,用于指定图形绘制的位置
下面列出这些函数:
(1)绘制矩形
rect(surface, # 绘制图形的画布
color, # 图形颜色
rect, # Rect对象
width=0, # 画笔粗细,默认填充
border_radius=0, # 圆角矩形半径。范围[0,长边/2],0表示不绘制圆角矩形
border_top_left_radius=-1, # 设置左上边框的值,默认是border_radius
border_top_right_radius=-1, # 设置右上角边框的值
border_bottom_left_radius=-1, # 设置左下边框的值
border_bottom_right_radius=-1) # 设置右下边框的值
(2)绘制多边形
polygon(surface,
color,
points, # 多个点的列表,例如[(x1,y1), (x2,y2), (x3,y3)]
width=0)
(3)绘制圆
circle(surface,
color,
center, # 圆心。(x1, y1)或[x1, y1]或pygame.math.Vector2对象
radius, # 半径。必须大于1
width=0,
draw_top_right=None, # True:绘制圆的右上角
draw_top_left=None, # True:绘制圆的左上角
draw_bottom_left=None, # True:绘制圆的左下角
draw_bottom_right=None) # True:绘制圆的右下角
(4)绘制扇形或弧
arc(surface,
color,
rect, # Rect对象
start_angle, # 弧的起始角度(单位:弧度)
stop_angle, # 弧的终止角度(单位:弧度)
width=1)
(5)绘制椭圆
ellipse(surface,
color,
rect, # Rect对象
width=0)
(6)绘制线
# 单线
line(surface,
color,
start_pos, # 直线的起始点
end_pos, # 直线的终止点
width=1)
# 多条线
lines(surface,
color,
closed, # 是否封闭图形
points, # 想多边形那样的多个点集合
width=1)
# 抗锯齿线
aaline(surface,
color,
start_pos, # 直线的起始点
end_pos, # 直线的终止点
blend=1)
# 多条抗锯齿线
aalines(surface,
color,
closed, # 是否封闭图形
points, # 想多边形那样的多个点集合
blend=1)
实例2:绘制图形
# 06-绘制图形.py
import pygame.math
import pygame
import sys
from math import pi
pygame.init()
BLACK = ( 0, 0, 0)
WHITE = (255, 255, 255)
BLUE = ( 0, 0, 255)
GREEN = ( 0, 255, 0)
RED = (255, 0, 0)
size = [800, 800]
screen = pygame.display.set_mode(size)
screen.fill(WHITE)
pygame.display.set_caption(__name__)
clock = pygame.time.Clock()
while True:
clock.tick(10)
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit(0)
# 从(0, 0)到(50, 50)画线,粗细为5
pygame.draw.line(screen, GREEN, [0, 0], [50, 50], 5)
# 画多条线
pygame.draw.lines(screen, BLACK, False, [[0, 80], [50, 90], [200, 80], [220, 30]], 5)
# 无锯齿的线
pygame.draw.aaline(screen, GREEN, [0, 50],[700, 700], True)
# 画无锯齿的线
pygame.draw.lines(screen, BLACK, True, [[0, 790], [500, 790], [200, 600], [700, 300]], 5)
# 画矩形
pygame.draw.rect(screen, BLACK, [75, 10, 50, 20], 2)
# 填充矩形
pygame.draw.rect(screen, BLACK, [150, 10, 50, 20])
# 圆角矩形
pygame.draw.rect(screen, GREEN, [400, 400,200, 100], 10, border_radius=15)
pygame.draw.rect(screen, RED, [600, 600, 100, 100], 0, border_radius=10, border_top_left_radius=0,
border_bottom_right_radius=15)
# 椭圆
pygame.draw.ellipse(screen, RED, [225, 10, 100, 50], 2)
# 椭圆
pygame.draw.ellipse(screen, RED, [400, 10, 50, 90])
# 多边形,这里画三角形
pygame.draw.polygon(screen, BLACK, [[100, 100], [0, 200], [200, 200]], 5)
# 画弧
pygame.draw.arc(screen, BLACK,[210, 75, 150, 125], 0, pi/2, 2)
pygame.draw.arc(screen, GREEN,[210, 75, 150, 125], pi/2, pi, 2)
pygame.draw.arc(screen, BLUE, [210, 75, 150, 125], pi,3*pi/2, 2)
pygame.draw.arc(screen, RED, [210, 75, 150, 125], 3*pi/2, 2*pi, 2)
# 画圆
pygame.draw.circle(screen, BLUE, [500, 250], 45, 5)
pygame.draw.circle(screen, GREEN, [500, 250], 40, 30)
# 画圆的1/4
pygame.draw.circle(screen, BLUE, [350, 350], 100, 0, draw_top_right=True)
pygame.draw.circle(screen, RED, [350, 350], 100, 30, draw_top_left=True)
pygame.draw.circle(screen, GREEN, [350, 350], 100, 20, draw_bottom_left=True)
pygame.draw.circle(screen, BLACK, [350, 350], 100, 10, draw_bottom_right=True)
pygame.display.flip()
pygame.quit()
效果:
以上就是“python pygame的图形绘制和图片处理教程”的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://phpxs.com/post/11236/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料
查 看2022高级编程视频教程免费获取