文本#

class arcade.Text(text: str, x: int, y: int, color: Tuple[int, int, int] | Tuple[int, int, int, int] = (255, 255, 255, 255), font_size: float = 12, width: int | None = 0, align: str = 'left', font_name: str | Tuple[str, ...] = ('calibri', 'arial'), bold: bool = False, italic: bool = False, anchor_x: str = 'left', anchor_y: str = 'baseline', multiline: bool = False, rotation: float = 0, batch: Batch | None = None, group: Group | None = None, z: int = 0)[源代码]#

基类:

一种面向对象的方式将文本绘制到屏幕上。

小技巧

在性能很重要的时候使用这个类!

不像 draw_text() ,这个类不会每次都浪费时间重新计算和重新设置任何文本。 draw() 被称为。这使其速度更快,同时:

  • 需要您自己管理实例和绘制

  • 使用可以忽略的额外内存

随着更多的文本需要被绘制到屏幕上,速度优势也会扩大。

构造函数参数的工作方式与 draw_text() 。有关如何使用它们的详细说明,请参阅其文档。有关代码示例,请参见 使用文本对象更好地绘制文本

参数:
  • text -- 要显示的初始文本。可以是空字符串

  • x -- 文本锚点与之对齐的X位置

  • y -- 文本锚点与之对齐的Y位置

  • z -- 文本锚点与之对齐的Z位置

  • color -- 文本的颜色为RGBA元组或 Color 举个例子。

  • font_size -- 文本大小(以磅为单位)

  • width -- 以像素为单位的宽度限制

  • align -- 水平对齐;除“Left”以外的值需要设置宽度

  • font_name (Union[str, Tuple[str, ...]]) -- 字体名称、字体文件的路径或名称列表

  • bold -- 是否将文本绘制为粗体

  • italic -- 是否将文本绘制为斜体

  • anchor_x -- 如何计算锚点的x坐标。选项:“左”、“中”或“右”

  • anchor_y -- 如何计算锚点的y坐标。选项:“上”、“下”、“中”或“基线”。

  • multiline -- 需要设置宽度;启用自动换行而不是剪裁

  • rotation -- 从水平方向逆时针旋转,以度为单位

以外的所有构造函数参数 text 具有相应的属性。若要访问当前文本,请使用 value 属性而不是。

默认情况下,文本的放置方式如下:

  • 其边框的左边缘位于 x

  • 它的基线是 y

基线位于文本底部所在的行上,不包括尾随字母,如y:

../../_images/text_anchor_y.png

蓝线是字符串的基线 "Python"#

rotation 允许文本绕锚点旋转传递的度数。正值从水平方向逆时针旋转,而负值则顺时针旋转:

../../_images/text_rotation_degrees.png

围绕默认锚点旋转( anchor_y="baseline"anchor_x="left" )#

draw() None[源代码]#

将标签以其当前位置绘制到屏幕上 xy 位置。

draw_debug(anchor_color: Tuple[int, int, int, int] = (255, 0, 0, 255), background_color: Tuple[int, int, int, int] = (0, 0, 139, 255), outline_color: Tuple[int, int, int, int] = (255, 255, 255, 255)) None[源代码]#

使用显示内容区域、轮廓和锚点的调试几何图形绘制测试。

参数:
  • anchor_color -- 锚点的颜色

  • background_color -- 为内容背景上色

  • outline_color -- 内容轮廓的颜色

align#
anchor_x#

获取或设置水平锚点。

选项:“左”、“中”或“右”

anchor_y#

获取或设置垂直锚点。

选项:“上”、“下”、“中”或“基线”

batch#
bold#

获取或设置标签的粗体状态

bottom#

底部内容边框的像素位置。

color#

获取或设置标签的文本颜色

content_height#

获取文本内容的像素高度。

content_size#

获取文本内容的像素宽度和高度。

content_width#

获取文本内容的像素宽度

font_name#

获取或设置标签的字体名称(S)

font_size#

获取或设置标签的字体大小

group#
height#

获取或设置标签的高度(以像素为单位)。使用多行文本时,此值会影响文本流动。如果您要查找文本的物理大小,请参见 content_height

italic#

获取或设置标签的斜体状态

left#

左侧内容边框的像素位置。

multiline#

获取或设置标签的多行标志。

position#

元组形式的当前x,y位置。

这比分别设置x和y位置要快,因为底层几何体只需要更改一次位置。

right#

右侧内容边框的像素位置。

rotation#
size#

获取标签的大小

text#

获取或设置要显示的当前文本字符串。

分配的值将被转换为字符串。

这是的别名 value

top#

内容顶部边框的像素位置。

value#

获取或设置要显示的当前文本字符串。

分配的值将被转换为字符串。

width#

获取或设置标签宽度(以像素为单位)。使用多行文字时,此值会影响文字流动。如果您要查找文本的物理大小,请参见 content_width

x#

获取或设置标签的x位置

y#

获取或设置标签的y位置

z#

获取或设置标签的z位置

arcade.create_text_sprite(text: str, color: Tuple[int, int, int, int] = (255, 255, 255, 255), font_size: float = 12, width: int | None = None, align: str = 'left', font_name: str | Tuple[str, ...] = ('calibri', 'arial'), bold: bool = False, italic: bool = False, anchor_x: str = 'left', multiline: bool = False, texture_atlas: TextureAtlas | None = None, background_color: Tuple[int, int, int, int] | None = None) Sprite[源代码]#

创建包含基于的文本的精灵 Text

在内部,这将创建一个文本对象和一个空纹理。然后,它使用提供的纹理图集或获取默认的纹理图集,并将文本对象绘制到纹理图集中。

然后,它创建一个引用新创建的纹理的精灵,并相应地定位它,这是从函数返回的最终结果。

如果您提供的是自定义纹理贴图集,请记住,生成的Sprite只能添加到使用该贴图集的SpriteList中。如果它被添加到使用不同地图集的SpriteList中,您很可能只会看到一个黑框在其位置绘制。

参数:
  • text -- 要显示的初始文本。可以是空字符串

  • color -- 文本的颜色为3(RGB)或4(RGBA)整数的元组或列表

  • font_size -- 文本大小(以磅为单位)

  • width -- 以像素为单位的宽度限制

  • align -- 水平对齐;除“Left”以外的值需要设置宽度

  • font_name -- 字体名称、字体文件的路径或名称列表

  • bold -- 是否将文本绘制为粗体

  • italic -- 是否将文本绘制为斜体

  • anchor_x -- 如何计算锚点的x坐标。选项:“左”、“中”或“右”

  • multiline -- 需要设置宽度;启用自动换行而不是剪裁

  • texture_atlas -- 用于新创建的纹理的纹理贴图集。如果为None,则将使用默认的全局地图集。

  • background_color -- 文本的背景色。如果没有,则背景将是透明的。

arcade.draw_text(text: Any, x: int, y: int, color: Tuple[int, int, int, int] = (255, 255, 255, 255), font_size: float = 12, width: int = 0, align: str = 'left', font_name: str | Tuple[str, ...] = ('calibri', 'arial'), bold: bool = False, italic: bool = False, anchor_x: str = 'left', anchor_y: str = 'baseline', multiline: bool = False, rotation: float = 0, z: int = 0)[源代码]#

为初学者提供了一种绘制文本的简单方法。

警告

使用 arcade.Text 对象取而代之。

这种绘制文本的方法非常慢,可能会在不久的将来被取消。根据用例的不同,文本对象可以快10-100倍。

警告

相机会影响文字绘制!

如果你想绘制一个不随游戏世界移动的定制图形用户界面,你将需要第二个摄像头。有关如何执行此操作的信息,请参见 以滚动屏幕为中心移动

使用此功能,您可以轻松开始绘制文本,其性能比旧的基于枕头的文本更好。如果您需要更高的性能,请考虑使用 Text

示例代码可在以下位置找到 缓慢但轻松的文本绘制

参数:
  • text -- 要显示的文本。传入的对象将被转换为字符串

  • x -- 文本锚点与之对齐的X位置

  • y -- 文本锚点与之对齐的Y位置

  • z -- 文本锚点与之对齐的Z位置

  • color -- RGBA元组形式的文本颜色或 Color 举个例子。

  • font_size -- 文本大小(以磅为单位)

  • width -- 以像素为单位的宽度限制

  • align -- 水平对齐;除“Left”以外的值需要设置宽度

  • font_name (Union[str, Tuple[str, ...]]) -- 字体名称、字体文件的路径或名称列表

  • bold -- 是否将文本绘制为粗体

  • italic -- 是否将文本绘制为斜体

  • anchor_x -- 如何计算锚点的x坐标

  • anchor_y -- 如何计算锚点的y坐标

  • multiline -- 需要设置宽度;启用自动换行而不是剪裁

  • rotation -- 从水平方向逆时针旋转,以度为单位

默认情况下,文本的放置方式如下:

  • 其边框的左边缘位于 x

  • 它的基线是 y

文本的基线是要在其上书写的行:

../../_images/text_anchor_y.png

蓝线是字符串的基线 "Python"#

font_name 可以是以下任一项:

  • 控件中的内置字体 内置资源

  • 系统字体的名称

  • 指向系统上字体的路径

  • 一个 tuple 包含前三个元素的任意组合

将按顺序尝试提供的每个条目,直到找到一个条目。如果未找到任何字体,则将选择默认字体(通常为Arial)。

anchor_xanchor_y 指定如何计算锚点,这会影响文本的显示方式:

  • 相对于放置的位置 xy

  • 已旋转

默认情况下,文本的绘制方式是 x 位于文本边框的左侧,并且 y 是在基线上。

您可以通过将下列值的组合传递给 anchor_xanchor_y

允许的值 anchor_x#

字符串值

实际效果

锚定位置

"left" (default)

左侧绘制的文本位于 x

文本边框左侧的锚点

"center"

水平居中绘制的文本 x

文本边框水平中心的锚点

"right"

使用右侧绘制的文本位于 x

放置在文本边框右侧的锚点

允许的值 anchor_y#

字符串值

实际效果

锚定位置

"baseline" (default)

启用基线时绘制的文本 y

放置在文本呈现基线上的锚点

"top"

顶部对齐的绘制文本 y

放置在文本顶部的锚点

"bottom"

绘制的文本的绝对底部对齐 y ,包括y和g等字母的尾部空格

放置在文本底部的锚点,位于分配给y和g等字母的空格之后

"center"

垂直居中绘制的文本 y

放置在文本垂直中心的锚点

rotation 允许文本绕锚点旋转传递的度数。正值从水平方向逆时针旋转,而负值则顺时针旋转:

../../_images/text_rotation_degrees.png

围绕默认锚点旋转( anchor_y="baseline"anchor_x="left" )#

将此函数理解为如下工作方式可能会有所帮助:

  1. 计算文本布局和对齐方式:

    1. 文本的字符根据当前样式选项在边界框中进行布局

    2. 文本上的锚点是根据文本值、样式以及 anchor_xanchor_y

  2. 文本被放置,以使其锚点位于 (x, y))

  3. 文本在最终绘制之前围绕其锚点旋转

此函数的效率低于使用 Text 因为每次调用时都会重复上面的一些步骤,而不是像类一样完全缓存。

arcade.load_font(path: str | Path) None[源代码]#

将字体加载到文件(通常为.ttf)中,并将其添加到全局字体注册表。

一个文件可以包含一种或多种字体。每种字体都有一个名称。打开字体文件,找到实际姓名(S)。这些名称用于在绘制文本时选择字体。

示例:

# Load a font in the current working directory
# (absolute path is often better)
arcade.load_font("Custom.ttf")
# Load a font using a custom resource handle
arcade.load_font(":font:Custom.ttf")
参数:

path -- 具有字体的字符串或路径数组。

抛出:

FileNotFoundError -- 如果未找到指定的字体

返回: