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 相关文章推荐
wxPython中文教程入门实例
Jun 09 Python
Python的Scrapy爬虫框架简单学习笔记
Jan 20 Python
Python中查看文件名和文件路径
Mar 31 Python
python并发2之使用asyncio处理并发
Dec 21 Python
python 获取指定文件夹下所有文件名称并写入列表的实例
Apr 23 Python
Python常见字典内建函数用法示例
May 14 Python
django反向解析和正向解析的方式
Jun 05 Python
Python3中bytes类型转换为str类型
Sep 27 Python
Python绘制频率分布直方图的示例
Jul 08 Python
Django REST framework内置路由用法
Jul 26 Python
Python selenium模拟网页点击爬虫交管12123违章数据
May 26 Python
TensorFlow中tf.batch_matmul()的用法
Jun 02 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 IP及IP段进行访问限制的代码
2008/12/17 PHP
解析:通过php socket并借助telnet实现简单的聊天程序
2013/06/18 PHP
解密ThinkPHP3.1.2版本之模板继承
2014/06/19 PHP
CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能
2014/07/18 PHP
php中序列化与反序列化详解
2017/02/13 PHP
Js中sort()方法的用法
2006/11/04 Javascript
技术男用来对妹子表白的百度首页
2014/07/23 Javascript
jQuery使用before()和after()在元素前后添加内容的方法
2015/03/26 Javascript
JS实现部分HTML固定页面顶部随屏滚动效果
2015/12/24 Javascript
浅谈几种常用的JS类定义方法
2016/06/08 Javascript
jquery插件canvaspercent.js实现百分比圆饼效果
2017/07/18 jQuery
微信小程序之前台循环数据绑定
2017/08/18 Javascript
bootstrap treeview 扩展addNode方法动态添加子节点的方法
2017/11/21 Javascript
Vue 路由间跳转和新开窗口的方式(query、params)
2019/12/25 Javascript
jQuery操作选中select下拉框的值代码实例
2020/02/07 jQuery
JavaScript中layim之整合右键菜单的示例代码
2021/02/06 Javascript
Python实现批量下载文件
2015/05/17 Python
浅谈python import引入不同路径下的模块
2017/07/11 Python
python实现用户管理系统
2018/01/10 Python
Python基于dom操作xml数据的方法示例
2018/05/12 Python
django 自定义过滤器的实现
2019/02/26 Python
python3实现钉钉消息推送的方法示例
2019/03/14 Python
python粘包问题及socket套接字编程详解
2019/06/29 Python
python中bs4.BeautifulSoup的基本用法
2019/07/27 Python
pytorch实现onehot编码转为普通label标签
2020/01/02 Python
Python sql注入 过滤字符串的非法字符实例
2020/04/03 Python
html5中canvas学习笔记1-画板的尺寸与实际显示尺寸
2013/01/06 HTML / CSS
ASOS比利时:英国线上零售商及自有品牌
2018/07/29 全球购物
英国在线药房和在线医生:LloydsPharmacy
2019/10/21 全球购物
New delete 与malloc free 的联系与区别
2013/02/04 面试题
大学学习生活感言
2014/01/18 职场文书
初中生操行评语大全
2014/04/24 职场文书
2015年安全保卫工作总结
2015/05/14 职场文书
上班旷工检讨书
2015/08/15 职场文书
用php如何解决大文件分片上传问题
2021/07/07 PHP
oracle索引总结
2021/09/25 Oracle