《Python和Pygame游戏开发指南》——2.19 用pygame.image.load()和blit()绘制图像

简介:

本节书摘来自异步社区《Python和Pygame游戏开发指南》一书中的第2章,第2.19节,作者[美]Al Sweigart(斯维加特), 李强 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.19 用pygame.image.load()和blit()绘制图像

如果你想要在屏幕上绘制简单的形状,绘制函数已经很好用了,但是,很多游戏都有图像(也叫作精灵,sprite)。Pygame能够从PNG、JPG、GIF和BMP图像文件中,将图像加载到Surface对象上。这些图像文件格式的区别参见http://invpy.com/formats

猫的图像存储在一个名为cat.png 的文件中。要加载这个文件的图像,将字符串'cat.png'传递给pygame.image.load()函数。pygame.image.load()函数调用将会返回一个Surface对象,图像已经绘制于其上。这个Surface对象将会是和显示Surface对象不同的另一个Surface对象,因此,我们必须将图像的Surface对象复制到显示Surface对象上。位图复制(Blitting)就是将一个Surface的内容绘制到另一个Surface之上。这通过blit() Surface对象方法来完成。

如果在调用pygame.image.load()的时候得到了一条错误消息,如“pygame. error: Couldn't open cat.png”,那么,在运行程序之前,请确保cat.png文件和catanimation.py位于同一文件夹之中。


screenshot

动画程序的第39行使用blit()方法把catImg复制到了DISPLAYSURF。blit()方法有两个参数。第一个参数是源Surface对象,这是将要复制到DISPLAYSURF Surface对象上的内容。第2个参数是两个整数的一个元组,这两个整数表示图像应该复制到的位置的左上角的X 和Y 坐标。

如果catx和caty设置为100和200,catImg的宽度为125,高度为79,这个blit()调用将会把该图像复制到DISPLAYSURF上,以使得catImg的左上角的XY 坐标为(100, 200),而其右下角的XY 坐标为(225, 279)。

注意,不能复制当前“锁定”的一个Surface(例如,通过其生成了一个PixelArray对象并且还没有删除该对象)。

游戏循环剩下的部分只是修改catx、caty和direction变量,以使得猫在窗口中移动。还有一个pygame.event.get()调用负责处理QUIT事件。

相关文章
|
14天前
|
数据采集 机器学习/深度学习 算法
Python基于决策树多分类模型实现水色图像的水质评价
Python基于决策树多分类模型实现水色图像的水质评价
|
1天前
|
算法 计算机视觉 Python
|
1天前
|
算法 计算机视觉 Python
|
7天前
|
机器学习/深度学习 编解码 算法框架/工具
使用Python实现深度学习模型:图像超分辨率与去噪
【7月更文挑战第17天】 使用Python实现深度学习模型:图像超分辨率与去噪
23 4
|
9天前
|
机器学习/深度学习 数据可视化 TensorFlow
使用Python实现深度学习模型:图像语义分割与对象检测
【7月更文挑战第15天】 使用Python实现深度学习模型:图像语义分割与对象检测
28 2
|
11天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
使用Python实现深度学习模型:图像风格迁移与生成
【7月更文挑战第13天】 使用Python实现深度学习模型:图像风格迁移与生成
15 2
|
10天前
|
资源调度 计算机视觉 Python
`scipy.ndimage`是SciPy库中的一个子模块,它提供了许多用于处理n维数组(通常是图像)的函数。
`scipy.ndimage`是SciPy库中的一个子模块,它提供了许多用于处理n维数组(通常是图像)的函数。
|
10天前
|
机器学习/深度学习 PyTorch TensorFlow
在深度学习中,数据增强是一种常用的技术,用于通过增加训练数据的多样性来提高模型的泛化能力。`albumentations`是一个强大的Python库,用于图像增强,支持多种图像变换操作,并且可以与深度学习框架(如PyTorch、TensorFlow等)无缝集成。
在深度学习中,数据增强是一种常用的技术,用于通过增加训练数据的多样性来提高模型的泛化能力。`albumentations`是一个强大的Python库,用于图像增强,支持多种图像变换操作,并且可以与深度学习框架(如PyTorch、TensorFlow等)无缝集成。
|
1月前
|
开发框架 Python
Python的`pygame`库用于2D游戏开发,涵盖图形、音频和输入处理。
【6月更文挑战第21天】Python的`pygame`库用于2D游戏开发,涵盖图形、音频和输入处理。要开始,先通过`pip install pygame`安装。基本流程包括:初始化窗口、处理事件循环、添加游戏元素(如玩家和敌人)、响应用户输入、更新游戏状态及结束条件。随着项目发展,可逐步增加复杂性。
45 1
|
1月前
|
机器学习/深度学习 人工智能 TensorFlow
机器学习项目实战:使用Python实现图像识别
在AI时代,Python借助TensorFlow和Keras实现图像识别,尤其在监控、驾驶、医疗等领域有广泛应用。本文通过构建CNN模型识别MNIST手写数字,展示图像识别流程:安装库→加载预处理数据→构建模型→训练→评估。简单项目为深度学习入门提供基础,为进一步探索复杂场景打下基础。
94 5