Pygame Surface创建图像

通过前面内容的介绍,我们对 Surface 对象有了大体上的认识。Pygame 针对文本、图像、颜色提供了不同模块来生成它们各自的 Surface 对象。Surface 模块是Pygame 中专门用来新建图像的,通过该模块可以创建一个 Surface 对象,语法格式如下:

Surface=pygame.Surface(size=(width,height),flags,depth)

参数函数如下:

size:表示 Surface 对象的矩形区域大小;

flags:功能标志位,有两个可选参数值 HWSURFACE 和 SPCALPHA,前者代表将创建的 Surface 对象存放于显存中,后者表示让图像的每一个像素都包含一个 alpha 通道

depth:指定像素的颜色深度,默认为自适应模式,由 Pygame 自动调节。

下面看一组简单的使用示例,如下所示:

import sys
import pygame
#使用pygame之前必须初始化
pygame.init()
#设置主屏窗口 ;设置全屏格式:flags=pygame.FULLSCREEN
screen = pygame.display.set_mode((400,400))
#设置窗口标题
pygame.display.set_caption('c语言中文网')
screen.fill('white')
#创建一个 50*50 的图像,并优化显示
face = pygame.Surface((50,50),flags=pygame.HWSURFACE)
#填充颜色
face.fill(color='pink')
while True:
    # 循环获取事件,监听事件
    for event in pygame.event.get():
        # 判断用户是否点了关闭按钮
        if event.type == pygame.QUIT:
            #卸载所有模块
            pygame.quit()
            #终止程序
            sys.exit()
    # 将绘制的图像添加到主屏幕上,(100,100)是位置坐标,显示屏的左上角为坐标系的(0,0)原点
    screen.blit(face, (100, 100))
    pygame.display.flip() #更新屏幕内容

从上述运行结果可以看出,通过 Surface 模块,我们成功的在主屏幕上绘制一个 50 * 50 的矩形区域。注意,如果不设置尺寸,Surface 默认创建一个和主游戏屏幕同样大小的区域。

Surface 模块还提供了处理图像的其他方法,下表对它们做了简单的介绍。

方法 说明

pygame.Surface.blit() 将一个图像(Surface 对象)绘制到另一个图像上

pygame.Surface.convert() 修改图像(Surface 对象)的像素格式

pygame.Surface.fill() 使用纯色填充 Surface 对象

pygame.Surface.scroll() 复制并移动 Surface 对象

pygame.Surface.set_alpha() 设置整个图像的透明度

pygame.Surface.get_at() 获取一个像素的颜色值

pygame.Surface.set_at() 设置一个像素的颜色值

pygame.Surface.get_palette() 获取 Surface 对象 8 位索引的调色板

pygame.Surface.map_rgb() 将一个 RGBA 颜色转换为映射的颜色值

pygame.Surface.set_clip() 设置该 Surface 对象的当前剪切区域

pygame.Surface.subsurface() 根据父对象创建一个新的子 Surface 对象
pygame.Surface.get_offset() 获取子 Surface 对象在父对象中的偏移位置
pygame.Surface.get_size() 获取 Surface 对象的尺寸

除了使用 Surface 模块新建图像外,我们还可以使用另外一种方法从外部加载图像,如下所示:

pygame.image.load("图片路径").convert()

上述方法将被加载的图像作为 Surface 对象来使用,因此它可以调用上述表格中所有方法。注意,此处之所以使用 convert()来转换被加载图片的像素格式,是为了提升 Pygame 对图片的处理速度,该操作能够保证图像的像素格式与图片的显示格式是相同的。

通过 image.load() 方法可以加载游戏的背景图,或者游戏中使用的其他元素,比如的人物、道具等等。

下面看一组简单的示例:

import pygame
#引入pygame中所有常量,比如 QUIT
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((500,250))
pygame.display.set_caption('c语言中文网')
#加载一张图片
image_surface = pygame.image.load("C:/Users/Administrator/Desktop/c-net.png").convert()
rect(left,top,width,height)指定图片上某个区域
special_flags功能标志位,指定颜色混合模式,默认为 0 表示用纯色填充
image_surface.fill((0,0,255),rect=(100,100,100,50),special_flags=0)
200,100 表示图像在水平、垂直方向上的偏移量,以左上角为坐标原点
image_surface.scroll(100,50)
无限循环,让窗口停留
while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            exit()
    # 将图像放置在主屏幕上
    screen.blit(image_surface,(0,0))
    pygame.display.update()

Original: https://blog.csdn.net/ccc369639963/article/details/122472410
Author: 睿科知识云
Title: Pygame Surface创建图像

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/782213/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 【代码实践】使用CLIP做一些多模态的事情

    CLIP到底有多强,让我们来试试吧! CLIP模型及代码地址:GitHub – openai/CLIP: Contrastive Language-Image Pret…

    Python 2023年10月27日
    043
  • 【AI】PyTorch实战(一):目标检测之fasterrcnn_resnet50_fpn

    1、简述 R-CNN系列演化史:R-CNN –> Fast RCNN –> Faster R-CNN 这篇博客只演示”怎么用&#82…

    Python 2023年10月27日
    063
  • fast-rcnn详解

    Fast R-CNN 算法及训练过程 R-CNN显著提升了目标检测算法的性能,但因为计算过于复杂,耗时很长,所以在实际的应用系统中,大都无法使用。经过分析可知,R-CNN的复杂性主…

    Python 2023年10月9日
    061
  • 创建Django项目

    建立虚拟环境 创建项目目录 创建虚拟环境在创建的目录中,打开cmd或者PowerShell python -m venv ll_venv -m 将python模块当做脚本运行,运行…

    Python 2023年8月5日
    036
  • JDBC — API

    目录 DriverManager 驱动管理类 作用 注册驱动 获取数据库连接 Connection 数据库连接对象 作用 获取执行SQL的对象 管理事务 Statement 作用 …

    Python 2023年9月27日
    033
  • python中常用的内置模块

    内置模块(一) Python内置的模块有很多,我们也已经接触了不少相关模块,接下来咱们就来做一些汇总和介绍。 内置模块有很多 & 模块中的功能也非常多,我们是没有办法注意全…

    Python 2023年6月3日
    068
  • windows server 发布flask 服务

    在内网服务器上发布已经搭建好的flask项目 0.已搭建好的运行 (1)打开入口文件所在位置,运行控制台 (2)进入环境 workon cim (3)配置环境变量 set FLAS…

    Python 2023年8月13日
    049
  • 功能强大的python包(八):Scrapy (网络爬虫)

    1.Scrapy简介 Scrapy是用python开发的一个应用程序框架,用于对网站进行爬取和提取结构化数据,这些结构化的数据可用于数据挖掘、信息处理或历史存档等。 Scrapy一…

    Python 2023年10月5日
    051
  • 移动平均

    移动平均 一、移动平均的主要分类 * 1. 简单移动平均 2. 加权移动平均 3. 指数移动平均 4. 分形自适应移动平均 5. 赫尔移动平均 二、移动平均使用时的注意点: * 1…

    Python 2023年8月7日
    047
  • python–ndarray–切片和索引

    ndarray 对象的内容可以通过索引或切片来访问和修改 ,与python中list的切片操作一样 ndarry 数组可以基于0-n 的下标进行索引,切片对象可以通过内置的slic…

    Python 2023年8月26日
    055
  • C盘满了,清理C盘常用步骤!

    真正的深度清理c盘 放心,大胆的删除! 第一步 删除临时文件 1.win+R调出命令框2.输入%temp% 点击确定 3.这里面的文件都是我们在运行软件时所产生的的临时文件,几乎每…

    Python 2023年10月27日
    032
  • 【毕业设计】深度学习人脸性别年龄识别系统 – python

    文章目录 0 前言 1 课题描述 2 实现效果 3 算法实现原理 * 3.1 数据集 3.2 深度学习识别算法 3.3 特征提取主干网络 3.4 总体实现流程 4 具体实现 * 4…

    Python 2023年8月1日
    065
  • 【无标题】

    参与任务 中文拼写检查任务是中文自然语言处理中非常具有代表性和挑战性的任务,其本质是找出文本段落中的错别字。这项任务在各种领域,如公文,新闻、财报中都有很好的落地应用价值。而其任务…

    Python 2023年9月27日
    047
  • mmdetection 报错 KeyError: ‘xxx is not in the models registry‘

    我的经验适用于直接下载解压别人源码后无法运行的,如果是自己改写的代码,还是检查一下__init__.py里有没有import xxx,或者 __all__里有没有注册xxx。 直入…

    Python 2023年8月3日
    062
  • Python实现各种加密,接口加解密不说难

    Original: https://www.cnblogs.com/pythonQqun200160592/p/15710830.htmlAuthor: python可乐编程Tit…

    Python 2023年5月24日
    074
  • 通过企业维度权重归一化及领域匹配实现企业排名

    一、pandas实现数据处理 1.pandas读取数据 import pandas as pd io = r’D:\study\多标签企业数据(推荐用).xlsx’ data = …

    Python 2023年8月22日
    039
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球