基于字形/字形的文本#

arcade.Text#

class arcade.Text(text: str, start_x: float, start_y: float, color: Union[Tuple[int, int, int], List[int], Tuple[int, int, int, int]] = (255, 255, 255), font_size: float = 12, width: int = 0, align: str = 'left', font_name: Union[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)[源代码]#

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

小技巧

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

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

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

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

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

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

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

  • start_x (float) -- 文本锚点与之对齐的X位置

  • start_y (float) -- 文本锚点与之对齐的Y位置

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 其边框的左边缘位于 start_x

  • 它的基线是 start_y

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

../_images/text_anchor_y.png

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

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

../_images/text_rotation_degrees.png

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

property anchor_x: str#

获取或设置水平锚点。

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

property anchor_y: str#

获取或设置垂直锚点。

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

property bold: bool#

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

property bottom: int#

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

property color: Union[Tuple[int, int, int], List[int], Tuple[int, int, int, int]]#

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

property content_height: int#

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

property content_size: Tuple[int, int]#

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

property content_width: int#

获取文本内容的像素宽度

draw() None[源代码]#

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

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

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

参数
  • anchor_color (Color) -- 锚点的颜色

  • background_color (Color) -- 为内容背景上色

  • outline_color (Color) -- 内容轮廓的颜色

property font_name: Union[str, Tuple[str, ...]]#

获取或设置此标签的字体名称

property font_size: float#

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

property height: int#

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

property italic: bool#

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

property left: int#

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

property multiline: bool#

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

property position: Union[Tuple[float, float], List[float]]#

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

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

property right: int#

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

property size#

获取此标签的大小

property text: str#

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

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

这是的别名 value

property top: int#

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

property value: str#

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

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

property width: int#

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

property x: float#

获取或设置标签的x位置

property y: float#

获取或设置标签的y位置

arcade.draw_text#

arcade.draw_text(text: Any, start_x: float, start_y: float, color: Union[Tuple[int, int, int], List[int], Tuple[int, int, int, int]] = (255, 255, 255), font_size: float = 12, width: int = 0, align: str = 'left', font_name: Union[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)[源代码]#

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

警告

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

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

警告

相机会影响文字绘制!

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

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

示例代码可在以下位置找到 绘制文本

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

  • start_x (float) -- 文本锚点与之对齐的X位置

  • start_y (float) -- 文本锚点与之对齐的Y位置

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

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

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

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

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

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

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

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

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

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

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

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

  • 其边框的左边缘位于 start_x

  • 它的基线是 start_y

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

../_images/text_anchor_y.png

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

font_name 可以是以下任一项:

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

  • 系统字体的名称

  • 指向系统上字体的路径

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

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

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

  • 相对于放置的位置 start_xstart_y

  • 已旋转

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

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

允许的值 anchor_x#

字符串值

实际效果

锚定位置

"left" (default)

左侧绘制的文本位于 start_x

文本边框左侧的锚点

"center"

水平居中绘制的文本 start_x

文本边框水平中心的锚点

"right"

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

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

允许的值 anchor_y#

字符串值

实际效果

锚定位置

"baseline" (default)

启用基线时绘制的文本 start_y

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

"top"

顶部对齐的绘制文本 start_y

放置在文本顶部的锚点

"bottom"

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

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

"center"

垂直居中绘制的文本 start_y

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

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

../_images/text_rotation_degrees.png

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

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

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

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

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

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

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

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

arcade.load_font#

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

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

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

示例:

# 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")
参数

font_name --

引发

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

返回