python–pygame入门–2.2–基础使用–理解图像并实现图像绘制


1、介绍

  • 在游戏中,能够看到的 游戏元素 大多都是 图像
    • 图像文件 初始是保存在磁盘上的,如果需要使用,第一步 就需要 被加载到内存
  • 要在屏幕上 看到某一个图像的内容,需要按照三个步骤:
    1. 使用 pygame.image.load() 加载图像的数据
    2. 使用 游戏屏幕 对象,调用 blit 方法 将图像绘制到指定位置
    3. 调用 pygame.display.update() 方法更新整个屏幕的显示,让我们看到绘制的结果

在这里插入图片描述

2、绘制图像

2.1、绘制背景图像

需求

  1. 加载 background.png 创建背景
  2. 背景 绘制在屏幕的 (0, 0) 位置
  3. 调用屏幕更新显示背景图像
# --------------绘制背景图像--------------
# 1> 加载图像
bg = pygame.image.load("../../resource/image/background.png")

# 2> 绘制在屏幕
screen.blit(bg, (0, 0))

# 3> 更新显示
pygame.display.update()
# 导入pygame模块
import pygame

# 导入并初始化所有 `pygame` 模块,使用其他模块之前,必须先调用 `init` 方法
pygame.init()

# 英雄的指标
hero_rect = pygame.Rect(100, 500, 120, 126)
# 创建游戏主窗口
screen = pygame.display.set_mode((480, 700))

# --------------绘制背景图像--------------
# 1> 加载图像
bg = pygame.image.load("../../resource/image/background.png")

# 2> 绘制在屏幕
screen.blit(bg, (0, 0))

# 3> 更新显示
pygame.display.update()

# 游戏循环
while True:
    pass

# 卸载所有 `pygame` 模块,在游戏结束之前调用!
pygame.quit()

在这里插入图片描述

2.2、绘制英雄图像

需求

  1. 加载 me1.png 创建英雄飞机
  2. 英雄飞机 绘制在屏幕的 (200, 500) 位置
  3. 调用屏幕更新显示飞机图像
# --------------绘制英雄图像--------------
# 1> 加载图像
hero = pygame.image.load("../../resource/image/me1.png")

# 2> 绘制在屏幕
screen.blit(hero, (200, 500))

# 3> 更新显示
pygame.display.update()
# 导入pygame模块
import pygame

# 导入并初始化所有 `pygame` 模块,使用其他模块之前,必须先调用 `init` 方法
pygame.init()

# 英雄的指标
hero_rect = pygame.Rect(100, 500, 120, 126)
# 创建游戏主窗口
screen = pygame.display.set_mode((480, 700))

# --------------绘制背景图像--------------
# 1> 加载图像
bg = pygame.image.load("../../resource/image/background.png")

# 2> 绘制在屏幕
screen.blit(bg, (0, 0))

# 3> 更新显示
pygame.display.update()

# --------------绘制英雄图像--------------
# 1> 加载图像
hero = pygame.image.load("../../resource/image/me1.png")

# 2> 绘制在屏幕
screen.blit(hero, (200, 500))

# 3> 更新显示
pygame.display.update()
# 游戏循环
while True:
    pass

# 卸载所有 `pygame` 模块,在游戏结束之前调用!
pygame.quit()

在这里插入图片描述

3、透明图像

  • png 格式的图像是支持 透明
  • 在绘制图像时,透明区域 不会显示任何内容
  • 但是如果下方已经有内容,会 透过 透明区域 显示出来

4、update() 方法的作用

可以在 screen 对象完成 所有 blit 方法之后,统一调用一次 display.update 方法,同样可以在屏幕上 看到最终的绘制结果

  • 使用 display.set_mode() 创建的 screen 对象 是一个 内存中的屏幕数据对象
    • 可以理解成是 油画画布
  • screen.blit 方法可以在 画布 上绘制很多 图像
    • 例如:英雄敌机子弹
    • 这些图像 有可能 会彼此 重叠或者覆盖
  • display.update() 会将 画布最终结果 绘制在屏幕上,这样可以 提高屏幕绘制效率增加游戏的流畅度

案例调整

# --------------绘制背景图像--------------
# 1> 加载图像
bg = pygame.image.load("../../resource/image/background.png")

# 2> 绘制在屏幕
screen.blit(bg, (0, 0))

# --------------绘制英雄图像--------------
# 1> 加载图像
hero = pygame.image.load("../../resource/image/me1.png")

# 2> 绘制在屏幕
screen.blit(hero, (200, 500))

# 3> 更新显示 - update 方法会把之前所有绘制的结果,一次性更新到屏幕窗口上
pygame.display.update()

# 导入pygame模块
import pygame

# 导入并初始化所有 `pygame` 模块,使用其他模块之前,必须先调用 `init` 方法
pygame.init()

# 英雄的指标
hero_rect = pygame.Rect(100, 500, 120, 126)
# 创建游戏主窗口
screen = pygame.display.set_mode((480, 700))

# --------------绘制背景图像--------------
# 1> 加载图像
bg = pygame.image.load("../../resource/image/background.png")

# 2> 绘制在屏幕
screen.blit(bg, (0, 0))

# --------------绘制英雄图像--------------
# 1> 加载图像
hero = pygame.image.load("../../resource/image/me1.png")

# 2> 绘制在屏幕
screen.blit(hero, (200, 500))

# 3> 更新显示 - update 方法会把之前所有绘制的结果,一次性更新到屏幕窗口上
pygame.display.update()



# 游戏循环
while True:
    pass

# 卸载所有 `pygame` 模块,在游戏结束之前调用!
pygame.quit()


在这里插入图片描述

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐