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中 ? : 三元表达式的使用介绍
Oct 09 Python
Python入门篇之对象类型
Oct 17 Python
Python matplotlib画图实例之绘制拥有彩条的图表
Dec 28 Python
基于python绘制科赫雪花
Jun 22 Python
Python实现定时执行任务的三种方式简单示例
Mar 30 Python
Python基于机器学习方法实现的电影推荐系统实例详解
Jun 25 Python
给Python学习者的文件读写指南(含基础与进阶)
Jan 29 Python
tensorflow对图像进行拼接的例子
Feb 05 Python
Python pip install如何修改默认下载路径
Apr 29 Python
python中 _、__、__xx__()区别及使用场景
Jun 30 Python
matplotlib 范围选区(SpanSelector)的使用
Feb 24 Python
分享Python获取本机IP地址的几种方法
Mar 17 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下使用无限生命期Session的方法
2007/03/16 PHP
五个PHP程序员工具
2008/05/26 PHP
Ha0k 0.3 PHP 网页木马修改版
2009/10/11 PHP
PHP $_FILES中error返回值详解
2014/01/30 PHP
php发送邮件的问题详解
2015/06/22 PHP
Auntion-TableSort国人写的一个javascript表格排序的东西
2007/11/12 Javascript
网页中返回顶部代码(多种方法)另附注释说明
2013/04/24 Javascript
Javascript中实现String.startsWith和endsWith方法
2015/06/10 Javascript
ECMAScript6中Map/WeakMap详解
2015/06/12 Javascript
详解JavaScript数组和字符串中去除重复值的方法
2016/03/07 Javascript
浅谈JavaScript中小数和大整数的精度丢失
2016/05/31 Javascript
深入理解Angular2 模板语法
2016/08/07 Javascript
深入浅析JSONAPI在PHP中的应用
2017/12/24 Javascript
使用react实现手机号的数据同步显示功能的示例代码
2018/04/03 Javascript
jquery无缝图片轮播组件封装
2020/11/25 jQuery
实例分析JS中的相等性判断===、 ==和Object.is()
2019/11/17 Javascript
微信小程序实现单个卡片左滑显示按钮并防止上下滑动干扰功能
2019/12/06 Javascript
详解Vue串联过滤器的使用场景
2020/04/30 Javascript
2款Python内存检测工具介绍和使用方法
2014/06/01 Python
Python保存MongoDB上的文件到本地的方法
2016/03/16 Python
基于python 字符编码的理解
2017/09/02 Python
python web.py开发httpserver解决跨域问题实例解析
2018/02/12 Python
python微信跳一跳系列之棋子定位颜色识别
2018/02/26 Python
python 数字类型和字符串类型的相互转换实例
2018/07/17 Python
python微信公众号之关注公众号自动回复
2018/10/25 Python
python批量下载网站马拉松照片的完整步骤
2018/12/05 Python
DataFrame.to_excel多次写入不同Sheet的实例
2019/12/02 Python
python获取系统内存占用信息的实例方法
2020/07/17 Python
Python爬虫实现selenium处理iframe作用域问题
2021/01/27 Python
HTML5标签大全
2016/11/23 HTML / CSS
叙述DBMS对数据控制功能有哪些
2016/06/12 面试题
质检的岗位职责
2013/11/17 职场文书
销售部主管岗位职责
2013/12/18 职场文书
搞笑车尾标语
2014/06/23 职场文书
扩展多台相同的Web服务器
2021/04/01 Servers
oracle索引总结
2021/09/25 Oracle