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 相关文章推荐
Python3 入门教程 简单但比较不错
Nov 29 Python
Python的Scrapy爬虫框架简单学习笔记
Jan 20 Python
Python实现的字典值比较功能示例
Jan 08 Python
Python中常见的异常总结
Feb 20 Python
python复制列表时[:]和[::]之间有什么区别
Oct 16 Python
使用python根据端口号关闭进程的方法
Nov 06 Python
Python pycharm 同时加载多个项目的方法
Jan 17 Python
python logging模块的使用总结
Jul 09 Python
Pandas透视表(pivot_table)详解
Jul 22 Python
Python字符串中删除特定字符的方法
Jan 15 Python
Python基于类路径字符串获取静态属性
Mar 12 Python
Python3.7 读取音频根据文件名生成脚本的代码
Apr 07 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
长波知识介绍
2021/03/01 无线电
thinkphp 一个页面使用2次分页的实现方法
2013/07/15 PHP
通过PHP简单实例介绍文件上传
2015/12/16 PHP
Thinkphp整合阿里云OSS图片上传实例代码
2019/04/28 PHP
laravel中Redis队列监听中断的分析
2020/09/14 PHP
javascript 面向对象的JavaScript类
2010/05/04 Javascript
js实现的仿新浪微博完美的时间组件升级版
2011/12/20 Javascript
javascript中判断一个值是否在数组中并没有直接使用
2012/12/17 Javascript
cookie.js 加载顺序问题怎么才有效
2013/07/31 Javascript
类似php的js数组的in_array函数自定义方法
2013/12/27 Javascript
JavaScript模拟可展开、拖动与关闭的聊天窗口实例
2015/05/12 Javascript
详解Wondows下Node.js使用MongoDB的环境配置
2016/03/01 Javascript
微信小程序 wxapp地图 map详解
2016/10/31 Javascript
基于Vuejs框架实现翻页组件
2020/06/29 Javascript
javascript数组去重方法分析
2016/12/15 Javascript
详解nodejs中的process进程
2017/03/19 NodeJs
vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀
2018/06/13 Javascript
基于axios 解决跨域cookie丢失的问题
2018/09/26 Javascript
vue配置接口域名方法总结
2019/05/12 Javascript
js实现百度登录窗口拖拽效果
2020/03/19 Javascript
[43:32]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
[51:15]完美世界DOTA2联赛PWL S2 PXG vs Magma 第一场 11.21
2020/11/24 DOTA
Python正则表达式教程之三:贪婪/非贪婪特性
2017/03/02 Python
基于python实现生成指定大小txt文档
2020/07/20 Python
加拿大建筑和装修专家:Reno-Depot
2017/12/21 全球购物
加拿大在线隐形眼镜和眼镜店:VisionPros
2019/10/06 全球购物
护士专业推荐信
2013/11/02 职场文书
八一慰问活动方案
2014/02/07 职场文书
高一军训的心得体会
2014/09/01 职场文书
建筑专业毕业生求职信
2014/09/30 职场文书
公安机关党的群众路线教育实践活动剖析材料
2014/10/10 职场文书
故意伤害人身损害赔偿协议书
2014/11/19 职场文书
2015夏季作息时间调整通知
2015/04/24 职场文书
2015年社区宣传工作总结
2015/05/20 职场文书
2016七夕情人节广告语
2016/01/28 职场文书
Java中的随机数Random
2022/03/17 Java/Android