gpt4 book ai didi

python - Shady 中的文本对齐控制

转载 作者:行者123 更新时间:2023-12-01 06:21:01 25 4
gpt4 key购买 nike

我正在使用 Shady 在屏幕上写一些文本,我想知道控制字符串对齐的最简单方法是什么。根据我的理解,Shady 文本对象中的对齐参数控制段落对齐,但我对控制单行文本的对齐感兴趣。
本质上,我想复制 matplotlib 文本函数的水平对齐、垂直对齐和旋转参数的行为。但要做到这一点,我需要估计渲染后字符串将占用的区域(以像素为单位)。我能从 Shady 那里得到这个吗?手册上说渲染是在CPU上完成的,然后将渲染后的String推送到GPU上,所以应该是可行的。

最佳答案

您是正确的,.text.align.text.wrapping 属性仅在文本流的逻辑级别与“对齐”有关 -即,多行文本刺激的各行如何在读取它们的坐标系中相对于彼此对齐(与整个刺激物理上的方向无关)。

您所讨论的属性(旋转、“垂直对齐”,甚至在只有一行文本时称为“水平对齐”)都不是特定于文本的属性:它们同样适用于任何矩形补片。因此,您要操作的属性是 stim.* 级别属性,而不是 stim.text.*。具体来说,它们是.anchor.rotation如此处所示:

#!/usr/bin/env python -m Shady shell

import Shady, Shady.Text
w = Shady.World(fullScreenMode=False)

axes = w.Stimulus(Shady.PixelRuler(1000), anchor=Shady.LOWER_LEFT, size=600)

xlabel = w.Stimulus(text='x axis label', x=300, y=0, anchor=Shady.TOP)
ylabel = w.Stimulus(text='y axis label', x=0, y=300, anchor=Shady.BOTTOM, rotation=90)

speed = 30
msg = w.Stimulus(
xy = 300,
rotation = Shady.Integral( lambda t: speed ),
text = 'Change msg.anchor to anything\nbetween [-1,-1] and [+1,+1]\nand see what happens',
text_blockbg = [0, 0, 0, 0.5],
)
Shady.AutoFinish(w)

Shady.Text 未记录的函数中,可能有某种方法可以提前估计渲染文本刺激的大小。事实上,经过仔细检查,看起来最不烦人的方法就是实际制作纹理数组:

img = Shady.Text.MakeTextImage('hello world')
heightInPixels, widthInPixels, _ = img.shape

但希望通过正确使用.anchor,您将不再需要它。

关于python - Shady 中的文本对齐控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60355485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com