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在不同层级目录import模块的方法
Jan 31 Python
Python计算字符宽度的方法
Jun 14 Python
python基础之入门必看操作
Jul 26 Python
windows下python之mysqldb模块安装方法
Sep 07 Python
pandas中Timestamp类用法详解
Dec 11 Python
Python中str.join()简单用法示例
Mar 20 Python
python对html过滤处理的方法
Oct 21 Python
Python爬虫 urllib2的使用方法详解
Sep 23 Python
python科学计算之numpy——ufunc函数用法
Nov 25 Python
python和c语言哪个更适合初学者
Jun 22 Python
Python3中最常用的5种线程锁实例总结
Jul 07 Python
python 判断字符串当中是否包含字符(str.contain)
Jun 01 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下实现农历日历的代码
2007/03/07 PHP
PHP中常用数组处理方法实例分析
2008/08/30 PHP
memcached 和 mysql 主从环境下php开发代码详解
2010/05/16 PHP
laravel安装和配置教程
2014/10/29 PHP
Yii框架组件和事件行为管理详解
2016/05/20 PHP
Laravel中的Auth模块详解
2017/08/17 PHP
PHP常见的序列化与反序列化操作实例分析
2019/10/28 PHP
jQuery 版本的文本输入框检查器Input Check
2009/07/09 Javascript
基于JQUERY的多级联动代码
2012/01/24 Javascript
Jquery选择子控件&quot;大于号&quot;和&quot; &quot;区别介绍及使用示例
2013/06/25 Javascript
Bootstrap页面缩小变形的快速解决办法
2017/02/03 Javascript
详解angular ui-grid之过滤器设置
2017/06/07 Javascript
详解vue-cli中配置sass
2017/06/21 Javascript
bootstrap Table的一些小操作
2017/11/01 Javascript
JQuery中DOM节点的操作与访问方法实例分析
2019/12/23 jQuery
[51:44]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第二场
2018/04/04 DOTA
python格式化字符串实例总结
2014/09/28 Python
python用10行代码实现对黄色图片的检测功能
2015/08/10 Python
python lambda函数及三个常用的高阶函数
2020/02/05 Python
jupyter note 实现将数据保存为word
2020/04/14 Python
美国折扣宠物药房:Total Pet Supply
2018/05/27 全球购物
英国比较机场停车场网站:Airport Parking Essentials
2019/12/01 全球购物
机电一体化专业应届本科生求职信
2013/09/27 职场文书
党章学习思想汇报
2014/01/14 职场文书
中英文求职信范文
2014/01/27 职场文书
经典而简洁的婚礼主持词
2014/03/13 职场文书
《火烧云》教学反思
2014/04/12 职场文书
经营目标管理责任书
2014/07/25 职场文书
机关作风建设整改方案
2014/10/27 职场文书
2016年大学迎新工作总结
2015/10/14 职场文书
践行三严三实心得体会(2016推荐篇)
2016/01/06 职场文书
springboot @ConfigurationProperties和@PropertySource的区别
2021/06/11 Java/Android
如何用Python搭建gRPC服务
2021/06/30 Python
springboot使用Redis作缓存使用入门教程
2021/07/25 Redis
微软Win11什么功能最惊艳? Windows11新功能特性汇总
2021/11/21 数码科技
Java异常处理try catch的基本用法
2021/12/06 Java/Android