脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - Python Color类与文字绘制零基础掌握

Python Color类与文字绘制零基础掌握

2022-08-05 18:07acktomas Python

这篇文章主要介绍了Python Color类与文字绘制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

视频

观看视频

pygame.Color

Pygame 中用于描述颜色的对象。

Color(name) -> Color,例如:Color("gray")

Color(r, g, b, a) -> Color,例如:Color(190, 190, 190, 255)

Color(rgbvalue) -> Color,例如:Color("#BEBEBEFF")

w3schools颜色选择器,选择任何你想要的颜色,你可以在这里找到它

Pygame 使用 Color 类表示 RGBA 颜色值,每个颜色值的取值范围是 0 ~ 255。当没有给出 alpha 的值时,默认是 255(不透明)

“RGB值”可以是一个颜色名,一个 HTML 颜色格式的字符串,一个 16 进制数的字符串,或者一个整型像素值。HTML 格式是 #rrggbbaa,其中 “rr”,“gg”,“bb”,“aa” 都是 2 位的 16 进制数。代表 alpha 的 “aa” 是可选的。16 进制数的字符串组成形式为 0xrrggbbaa,当然,其中的 “aa” 也是可选的

下列程序可以列出pygame预定义的颜色

?
1
2
3
from pprint import pprint
import pygame as pg
pprint(pg.color.THECOLORS)

方法&属性

pygame.Color.r — 获取或设置 Color 对象的红色值

pygame.Color.g — 获取或设置 Color 对象的绿色值

pygame.Color.b — 获取或设置 Color 对象的蓝色值

pygame.Color.a — 获取或设置 Color 对象的 alpha 值,透明度

pygame.Color.cmy — 获取或设置 Color 对象表示的 CMY 值

pygame.Color.hsva — 获取或设置 Color 对象表示的 HSVA 值

pygame.Color.hsla — 获取或设置 Color 对象表示的 HSLA 值

pygame.Color.i1i2i3 — 获取或设置 Color 对象表示的 I1I2I3 值

pygame.Color.normalize() — 返回 Color 对象的标准化 RGBA 值

pygame.Color.correct_gamma() — 应用一定的伽马值调整 Color 对象

pygame.Color.set_length() — 设置 Color 对象的长度(成员数量)

示例

让窗口的背景不断变化

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import pygame, sys
pygame.init()
screen_size = 640, 480
screen = pygame.display.set_mode(screen_size)
pygame.display.set_caption("pygame颜色")
GOLD = (255,251,0)
RED = pygame.Color('red')
WHITE = (255, 255, 255)
GREEN = pygame.Color('green')
color_list = [GOLD,RED,WHITE,GREEN]
fclock = pygame.time.Clock()
running = True
i = 0
while running:
    fclock.tick(1)
    for e in pygame.event.get():
        if e.type == pygame.QUIT:
            running = False
    i = i + 1
    i = 0 if i > 3 else i
    screen.fill(color_list[i])
    pygame.display.flip()
pygame.quit()

Rect对象与Surface对象区别

pygame.Surface表示绘制层、或绘图平面、或图层,用于表示图层、文字或图像的绘制效果,如果不绘制在主图层上,则不会被显示。

pygame.display.set_mode()生成主图层,是一个Surface对象,在主图层上绘制其它图层使用blit()方法

pygame.draw绘制图形后,返回一个矩形Rect类表示形状,

pygame.Rect表达一个矩形区域的类,Pygame利用Rect类来操作图形、图像、文字等信息。对应于当前主图层的某个区域,指定图层绘制的矩形区域。

文字的绘制

系统字体所在位置:

Python Color类与文字绘制零基础掌握

复制微软雅黑到“fonts”文件夹

pygame.freetype类:向屏幕上绘制特定字体的文字,文字不能直接用print(), 而是用像素根据字体点阵图绘制

Python Color类与文字绘制零基础掌握

pygame 包在加载时不会自动导入freetype。必须显式导入此模块才能使用。

?
1
2
import pygame
import pygame.freetype

pygame 1.9.2 中的新功能:freetype

常用的方法

1. pygame.freetype.Font

从支持的字体文件创建一个新的Font实例。

Font(file, size=0, font_index=0, resolution=0, ucs4=False) -> Font

参数:

file可以是表示字体文件名的字符串,包含字体的类文件对象,也可以是None;如果为None,则使用默认的Pygame字体。

(可选)可以指定size参数来设置文字的默认大小,这决定了渲染字符的大小。大小也可以显式传递给每个方法调用。由于缓存系统的工作方式,在构造函数上指定默认大小并不意味着在每次函数调用上手动传递大小都会带来性能提升。如果字体是位图并且没有给出大小,则默认大小设置为字体的第一个可用大小。

2. pygame.freetype.Font.render()

将渲染文本作为surface返回

render(text, fgcolor=None, bgcolor=None, style=STYLE_DEFAULT, rotation=0, size=0) -> (Surface, Rect)

返回一个新的Surface,文本以’fgcolor’给出的颜色呈现给它。如果没有给出前景色,则使用默认前景色fgcolor。如果给出bgcolor,Surface将用这种颜色填充。

返回值是一个元组:新Surface和边界矩形给出渲染文本的大小和原点。

如果为文本传递空字符串,则返回的Rect为零宽度和字体高度。

3. pygame.freetype.Font.render_to() 将文本渲染到现有surface上 render_to(surf, dest, text, fgcolor=None, bgcolor=None, style=STYLE_DEFAULT, rotation=0, size=0) -> Rect 将字符串文本呈现给pygame.Surface对象,位于dest,(x,y)表面坐标对。如果x或y不是整数,则尽可能将其转换为整数。接受前两个项是x和y位置元素的任何序列,包括Rect实例。与render()一样,可以选择fgcolor,style,rotation和size参数。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def word_wrap(surf, text, font, color=(0, 0, 0)):
    font.origin = True
    words = text.split(' ')
    width, height = surf.get_size()
    line_spacing = font.get_sized_height() + 2
    x, y = 0, line_spacing
    space = font.get_rect(' ')
    for word in words:
        bounds = font.get_rect(word)
        if x + bounds.width + bounds.x >= width:
            x, y = 0, y + line_spacing
        if x + bounds.width + bounds.x >= width:
            raise ValueError("word too wide for the surface")
        if y + bounds.height - bounds.y >= height:
            raise ValueError("text to long for the surface")
        font.render_to(surf, (x, y), None, color)
        x += bounds.width + space.width
return x, y

文字版的小球游戏

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import pygame, sys
import pygame.freetype
pygame.init()
size = screen_width, screen_height = 640, 480
screen = pygame.display.set_mode(size)
pygame.display.set_caption('文字游戏')
BLACK = pygame.Color('black')
GOLD = (255,251,0)
font1 = pygame.freetype.Font("C://Windows//Fonts//msyh.ttc", 28)
font_surface,font_rect = font1.render("小小工坊", fgcolor=GOLD, size=50)
pos = [screen_width // 2, screen_height // 2]
speed = [1,1]
fps = 60
fclock = pygame.time.Clock()
while True:
    fclock.tick(fps)
    for e in pygame.event.get():
        if e.type == pygame.QUIT:
            sys.exit()
    if pos[0] < 0 or pos[0] + font_rect.width > screen_width:
        speed[0] = -speed[0]
    if pos[1] < 0 or pos[1] + font_rect.height > screen_height:
        speed[1] = -speed[1]
    pos[0] = pos[0] + speed[0]
    pos[1] = pos[1] + speed[1]
    screen.fill(BLACK)
    screen.blit(font_surface,(pos[0],pos[1]))
    pygame.display.update()

到此这篇关于Python Color类与文字绘制零基础掌握的文章就介绍到这了,更多相关Python Color类与文字绘制内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://acktomas.blog.csdn.net/article/details/125856545

延伸 · 阅读

精彩推荐
  • PythonPython+selenium实现自动循环扔QQ邮箱漂流瓶

    Python+selenium实现自动循环扔QQ邮箱漂流瓶

    这篇文章主要为大家详细介绍了Python+selenium实现自动循环扔QQ邮箱漂流瓶,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参...

    Alick陈彬6312021-02-26
  • PythonPython报错:ModuleNotFoundError的解决办法

    Python报错:ModuleNotFoundError的解决办法

    "ModuleNotFoundError: No module named 'xxx'"这个报错是个非常常见的报错,几乎每个python程序员都遇到过,下面这篇文章主要给大家介绍了关于Python报:ModuleNotFoundError错...

    寇丁小小白8062022-06-27
  • Pythonpython 禁止函数修改列表的实现方法

    python 禁止函数修改列表的实现方法

    下面小编就为大家带来一篇python 禁止函数修改列表的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    Python教程网4352020-11-30
  • PythonPyTorch 如何将CIFAR100数据按类标归类保存

    PyTorch 如何将CIFAR100数据按类标归类保存

    这篇文章主要介绍了PyTorch 将CIFAR100数据按类标归类保存的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    Xie_learning11182021-10-26
  • Python在Django的session中使用User对象的方法

    在Django的session中使用User对象的方法

    这篇文章主要介绍了在Django的session中使用User对象的方法,Django是众Python web开发框架中人气最高的一个,需要的朋友可以参考下...

    脚本之家3882020-07-26
  • PythonPython3.x中自定义比较函数

    Python3.x中自定义比较函数

    这篇文章主要介绍了Python3.x中自定义比较函数,本文给出了自定义对象的比较、字典值value的比较实现方法,需要的朋友可以参考下 ...

    脚本之家3992020-06-12
  • Python对Python字符串中的换行符和制表符介绍

    对Python字符串中的换行符和制表符介绍

    下面小编就为大家分享一篇对Python字符串中的换行符和制表符介绍,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    yeatcsdn20942021-02-15
  • Python基于Pycharm加载多个项目过程图解

    基于Pycharm加载多个项目过程图解

    这篇文章主要介绍了基于Pycharm加载多个项目过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以...

    Mr.Gavin2822020-04-13