Python pygame绘制文字制作滚动文字过程解析


Posted in Python onDecember 12, 2019

这篇文章主要介绍了Python pygame绘制文字制作滚动文字过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

字体常用的不是很多,在pygame中大多用于提示文字,或者记录分数等事件。
字体绘制基本分为以下几个步骤:

  • 初始化字体模块
    • pygame.init()
  • 创建一个字体对象
    • 可以从文件或者系统内字体选取
      • pygame.font.SysFont('幼圆',50)
  • 绘制文本对象。
    • a.render("测试字体",True,(255,0,0),(0,0,0))
  • 屏幕绘制字体
    • screen.blit(text,[jx.x,jx.y])

绘制字体是用的表面中blit函数来绘制图像:

blit(source,dest,area = None,special_flags = 0) - > Rect

在此Surface上绘制源Surface。可以使用dest参数定位绘图。Dest可以是表示源左上角的坐标对。Rect也可以作为目标传递,矩形的topleft角将用作blit的位置。目标矩形的大小不会影响blit。

也可以传递可选的区域矩形。这表示要绘制的源Surface的较小部分。

也就是我们需要绘制的元素,需要绘制的位置输入进去,可以接受矩形区域的位置参数。

这里还演示了获取文本宽高,让文本在屏幕居中滚动的效果。

import pygame
import pprint

def main():
  # 初始化pygame
  pygame.init()
  # 初始化字体模块
  pygame.font.init()
  # 如果字体模块已初始化,则为true
  print('是否初始化',pygame.font.get_init())
  # 获取默认字体的文件名
  print('默认字体名',pygame.font.get_default_font())
  # 获取所有可用的字体
  pprint.pprint(pygame.font.get_fonts())
  # 在系统上找到特定的字体
  print('查找字体',pygame.font.match_font('arial'))
  #从系统字体创建一个Font对象
  # (名称,大小,粗体=假,斜体=假) - >字体
  a = pygame.font.SysFont('幼圆',50)

  # 从文件或对象绘制文本
  # pygame.font.Font('文件或对象',大小)
  
  # 在新Surface上绘制文本
  # 显示内容、是否消除锯齿、字体颜色、背景颜色
  text = a.render("gisoracle",True,(255,0,0),(0,0,0))

  # 取消初始化字体模块
  # pygame.font.quit()
  # 设置屏幕
  screen = pygame.display.set_mode((500,100))
  # 设置矩形区域
  ztx, zty, ztw, zth = text.get_rect()
  # 绘制显示文字的矩形区域
  jx = pygame.Rect(500,50-zth/2,ztw, zth) # 初始位置设置屏幕右边,并居住显示,2/1屏幕的高度 - 2/1字体的高度 向上移动是减
  # 设置游戏时钟
  clock = pygame.time.Clock()
  while True:
    # 文字滚动的频率
    clock.tick(30)
    # 重绘屏幕
    screen.fill((0,0,0))
    # 退出事件
    for event in pygame.event.get():
      if event.type == pygame.QUIT:
        pygame.quit()
        exit(0)
    # 文字从右向左移动
    jx.x -= 5
    # 如果字体全部移动出屏幕,则设置字体X轴位置为510, 500的话会出现的比较突然
    if jx.x < 0 - ztw:
      jx.x = 510
    # 屏幕绘制字体,
    screen.blit(text,[jx.x,jx.y])
    # 更新屏幕显示
    pygame.display.update()

if __name__ == '__main__':
  main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python的Flask框架中使用模版的入门教程
Apr 20 Python
Python 获得13位unix时间戳的方法
Oct 20 Python
TensorFlow在MAC环境下的安装及环境搭建
Nov 14 Python
浅谈Python NLP入门教程
Dec 25 Python
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
Jan 10 Python
Python使用sort和class实现的多级排序功能示例
Aug 15 Python
python导入模块交叉引用的方法
Jan 19 Python
详解Python的数据库操作(pymysql)
Apr 04 Python
python自定义函数实现最大值的输出方法
Jul 09 Python
Python实现大数据收集至excel的思路详解
Jan 03 Python
python列表删除和多重循环退出原理详解
Mar 26 Python
Python通过字典映射函数实现switch
Nov 06 Python
详解python 中in 的 用法
Dec 12 #Python
python调用c++返回带成员指针的类指针实例
Dec 12 #Python
在Python中实现函数重载的示例代码
Dec 12 #Python
django框架F&amp;Q 聚合与分组操作示例
Dec 12 #Python
使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能
Dec 12 #Python
django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】
Dec 12 #Python
python3中pip3安装出错,找不到SSL的解决方式
Dec 12 #Python
You might like
php循环输出数据库内容的代码
2008/05/24 PHP
第四章 php数学运算
2011/12/30 PHP
PHP将MySQL的查询结果转换为数组并用where拼接的示例
2016/05/13 PHP
对象的类型:本地对象(1)
2006/12/29 Javascript
Mootools 1.2教程(21)——类(二)
2009/09/15 Javascript
JavaScript中的稀疏数组与密集数组[译]
2012/09/17 Javascript
js计算文本框输入的字符数
2015/10/23 Javascript
js css+html实现简单的日历
2016/07/14 Javascript
Node.js 数据加密传输浅析
2016/11/16 Javascript
Bootstrap 手风琴菜单的实现代码
2017/01/20 Javascript
select下拉框插件jquery.editable-select详解
2017/01/22 Javascript
vue Render中slots的使用的实例代码
2017/07/19 Javascript
vue 自定义全局方法,在组件里面的使用介绍
2018/02/28 Javascript
jQuery+Cookie实现切换皮肤功能【附源码下载】
2018/03/25 jQuery
详解在Vue中使用TypeScript的一些思考(实践)
2018/07/06 Javascript
[01:08:32]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第二场 1月18日
2021/03/11 DOTA
Python实现Const详解
2015/01/27 Python
python获取当前用户的主目录路径方法(推荐)
2017/01/12 Python
python subprocess 杀掉全部派生的子进程方法
2017/01/16 Python
Python实现自动为照片添加日期并分类的方法
2017/09/30 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
2018/03/08 Python
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
2020/07/20 Python
python3+PyQt5泛型委托详解
2018/04/24 Python
python使用Matplotlib绘制分段函数
2018/09/25 Python
对Python3中bytes和HexStr之间的转换详解
2018/12/04 Python
Python requests获取网页常用方法解析
2020/02/20 Python
Keras设置以及获取权重的实现
2020/06/19 Python
详解Python Celery和RabbitMQ实战教程
2021/01/20 Python
python实现简单的井字棋游戏(gui界面)
2021/01/22 Python
城市精细化管理实施方案
2014/03/04 职场文书
2015年仓管员工作总结
2015/04/21 职场文书
天气温馨提示语
2015/07/14 职场文书
Javascript中的解构赋值语法详解
2021/04/02 Javascript
如何解决.cuda()加载用时很长的问题
2021/05/24 Python
Python类方法总结讲解
2021/07/26 Python
阿里云ECS云服务器快照的概念以及如何使用
2022/04/21 Servers