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 相关文章推荐
在Django的上下文中设置变量的方法
Jul 20 Python
Python处理PDF及生成多层PDF实例代码
Apr 24 Python
通过python顺序修改文件名字的方法
Jul 11 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
Sep 13 Python
Python输出\u编码将其转换成中文的实例
Dec 15 Python
python交互界面的退出方法
Feb 16 Python
PyTorch搭建一维线性回归模型(二)
May 22 Python
PyQt4编程之让状态栏显示信息的方法
Jun 18 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
Dec 09 Python
python读取ini配置的类封装代码实例
Jan 08 Python
python代码如何注释
Jun 01 Python
python实现发送QQ邮件(可加附件)
Dec 23 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/08/30 PHP
几种有用的变型 PHP中循环语句的用法介绍
2012/01/30 PHP
正确的PHP匹配UTF-8中文的正则表达式
2015/05/13 PHP
Linux安装配置php环境的方法
2016/01/14 PHP
php web环境和命令行环境下查找php.ini的位置
2019/07/17 PHP
laravel5.6框架操作数据curd写法(查询构建器)实例分析
2020/01/26 PHP
给网站上的广告“加速”显示的方法
2007/04/08 Javascript
JS 非图片动态loading效果实现代码
2010/04/09 Javascript
ASP.NET jQuery 实例8 (动态添加内容到DropDownList)
2012/02/03 Javascript
在javaScript中关于submit和button的区别介绍
2013/10/20 Javascript
JavaScript中的公有、私有、特权和静态成员用法分析
2014/11/20 Javascript
JavaScript中的继承方式详解
2015/02/11 Javascript
基于jquery实现日历签到功能
2020/09/11 Javascript
基于css3新属性transform及原生js实现鼠标拖动3d立方体旋转
2016/06/12 Javascript
JavaScript中有关一个数组中最大值和最小值及它们的下表的输出的解决办法
2016/07/01 Javascript
微信js-sdk地理位置接口用法示例
2016/10/12 Javascript
jQuery Chosen通用初始化
2017/03/07 Javascript
JavaScript类的继承操作实例总结
2018/12/20 Javascript
JS算法题之查找数字在数组中的索引位置
2019/05/15 Javascript
javascript中undefined的本质解析
2019/07/31 Javascript
前端如何实现动画过渡效果
2021/02/05 Javascript
python 拷贝特定后缀名文件,并保留原始目录结构的实例
2018/04/27 Python
windows下搭建python scrapy爬虫框架步骤
2018/12/23 Python
Python中整数的缓存机制讲解
2019/02/16 Python
python将字符串list写入excel和txt的实例
2019/07/20 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
2019/12/05 Python
python 使用opencv 把视频分割成图片示例
2019/12/12 Python
Tensorflow 模型转换 .pb convert to .lite实例
2020/02/12 Python
css3新单位vw、vh的使用教程
2018/03/23 HTML / CSS
Links of London官方网站:英国标志性的珠宝品牌
2017/04/09 全球购物
便利店投资创业计划书
2014/02/08 职场文书
六查六看心得体会
2014/10/14 职场文书
开国大典观后感
2015/06/04 职场文书
《全神贯注》教学反思
2016/02/22 职场文书
JavaScript实现显示和隐藏图片
2021/04/29 Javascript
Django + Taro 前后端分离项目实现企业微信登录功能
2022/04/07 Python