当前位置: 首页 > news >正文

Pygame之绘制图形与文本的基本方法

前提与补充:surface与pygame的坐标

在许多教程中,我们可以看到surface,是指表面对象(窗口对象),其实就是指窗口。

Pygame 的坐标原点 (0, 0) 位于屏幕的‌左上角‌,x 轴向右增加,y 轴向下增加。

screen = pygame.display.set_mode((600,800)) 就是surface表面对象

1. 绘制一个‌实心红色矩形‌:

pygame.draw.rect(surface,color,(x, y, width, height),width)

参数详解:

  • surface:窗口 (screen表面)

  • x = 100:矩形左上角距离屏幕左边缘 100 像素。

  • y = 100:矩形左上角距离屏幕上边缘 100 像素。

  • 默认值width=0时,矩形将被‌实心填充‌。

import pygame import sys pygame.init() screen = pygame.display.set_mode((600,800)) pygame.display.set_caption("红色实心的矩形") running = True while running: # 事件处理 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # 注意要在while主循环里面绘画 # 画出一个红色的实心的矩形 pygame.draw.rect(screen, (255, 0, 0), (100, 100, 200, 100)) pygame.display.flip() pygame.quit() sys.exit()

2. 绘制一条‌实心绿色直线

pygame.draw.line(surface, color, start_pos, end_pos, width=1)

参数详解:

  • surface:窗口 (screen表面)

  • 起始点坐标 —— 直线的起点位于距离屏幕左边缘 100 像素、上边缘 100 像素的位置。

  • 结束点坐标 —— 直线的终点位于距离屏幕左边缘x像素、上边缘 y 像素的位置

  • 线宽,默认值为 1 像素

import pygame import sys pygame.init() screen = pygame.display.set_mode((400,400)) pygame.display.set_caption("一条绿色的倾斜直线") running = True while running: # 事件处理 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # 绘制一条直线 pygame.draw.line(screen, (0, 255, 0), (100, 100), (200, 200), 5) pygame.display.flip() pygame.quit() sys.exit()

3. 绘制文本

渲染并显示文本的三个步骤:①创建字体对象;②渲染文本表面;③将文本绘制到屏幕上。

① 创建字体对象

font = pygame.font.Font(None, 36)

‌参数解析‌:

  • None:默认字体。若自定义字体文件(如.ttf.otf),替换为字体文件的路径字符串,例如'arial.ttf'`。

  • 36:指定字体的大小(高度,单位为像素)。

② 渲染文本为 Surface 对象(图像)

text = font.render('Hello World', True, (0, 255, 0))

render——渲染

参数解析‌:

  • 'Hello World':要显示的文本内容。

  • True:是否启用抗锯齿(Anti-aliasing)。

    • True:文字边缘平滑,看起来更清晰美观(推荐)。

    • False:文字边缘有锯齿,但在某些复古风格游戏中可能故意使用。

  • (0, 255, 0):文字颜色,这里是纯绿色(RGB)。

③ 将文本绘制到屏幕表面

screen.blit(text, (100, 300))——将渲染好的文本图像(Surface)绘制到主屏幕表面

参数解析‌:

  • text:要显示的文本内容

  • (100,300):文本左上角在屏幕上的坐标位置

④ 绘制文本的完整代码
font = pygame.font.Font(None, 36) text = font.render('Hello World', True, (0, 255, 0)) screen.blit(text, (100, 300)) # 注意:这里为screen
⑤完整代码
import pygame import sys pygame.init() screen = pygame.display.set_mode((400,400)) pygame.display.set_caption("绘制文字") running = True while running: # 事件处理 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # 绘制绿色的文本 font = pygame.font.Font(None,36) text = font.render("Hello World!",True,(0,255,0)) screen.blit(text,(100,300)) # 注意这里是screen pygame.display.flip() # 更新屏幕 pygame.quit() sys.exit()

http://www.jsqmd.com/news/731964/

相关文章:

  • 如何让电视盒子秒变家庭影音中心?TVBoxOSC给你答案
  • 小胶质细胞细胞系伯远生物小胶质细胞细胞系
  • 即梦去水印小程序怎么用?2026实测教程+安全吗?这几个方法真的好使 - 科技热点发布
  • 语音助手家庭安全问答大比拼:谁能给出最准确答案?
  • 3步告别英文困扰:Minecraft模组中文界面终极指南
  • BilibiliDown:免费高效的B站视频音频提取终极指南
  • 终极Mac音乐解密指南:3分钟解锁QQ音乐加密格式,让音乐重获自由播放
  • Pearcleaner架构解析:macOS应用残留文件的系统性清理方案
  • Hitboxer SOCD工具:彻底解决游戏按键冲突的终极方案
  • Android电池监控小部件架构:实时电量显示与系统集成方案
  • 2026年3月成都火锅聚餐地点推荐分析,天台火锅/牛油火锅/重庆火锅/美食/菌汤火锅,成都火锅团建地点怎么选择 - 品牌推荐师
  • Illustrator脚本架构解析:从自动化工具到设计工作流引擎的技术演进
  • Android电池监控解决方案:构建优雅的实时电量小部件实战指南
  • 2026 年河南钢丝网骨架管厂家那些你不可不知的干货知识
  • 2025届必备的AI写作工具推荐
  • AI化学语言模型扒拉出数10种既往未知代谢物
  • 太空互联网系统的地面测试模拟:软件测试从业者的专业视角
  • Moonlight-PC技术架构深度解析:跨平台游戏串流实现原理与JNI集成机制
  • 完全指南:如何通过cursor-free-vip免费解锁Cursor Pro高级功能
  • VADER情感分析终极指南:7500+词汇的社交媒体情感检测利器
  • 【数据结构】二叉树基本概念及堆的C语言模拟实现
  • 告别混乱!用Qt的SUBDIRS管理多项目工程,保姆级配置流程分享
  • 告别触控失灵!手把手教你用ADB命令修复Scrcpy连接小米/鸿蒙手机(附一键脚本)
  • ChatPilot:模块化本地AI对话应用框架的设计、部署与深度定制指南
  • 2026 神马影视 8.8 新版源码 架构性能全新升级
  • 告别报错!手把手教你搞定Matlab/Simulink中Embedded Coder的6个关键配置(含可变信号、主函数设置)
  • Nintendo Switch大气层系统终极指南:从零构建自定义固件的完整解决方案
  • 嵌入式电源设计避坑指南:基于WL2866D的I2C控制实战,这些细节错了真没输出
  • 如何用Python轻松下载B站4K大会员视频:完整免费教程
  • 告别重复劳动:用Python自动化工具解放你的双手