在上一教程中,我描述了如何包装文本,这不够精确,并且存在无法解决的问题。 现在,我终于理解了找到的代码,现在我可以解释它是如何工作的。
链接到代码: https : //www.pygame.org/wiki/TextWrap 。
要做的第一件事就是更改代码中的几个字符,正如它清楚地表明的那样:
警告! 复制/粘贴此代码时,您需要将“&lt;”更改为“ <”符号。
(还有一个“&gt;”字符,基本上是一个“>”符号)
现在,让我们讨论代码。
显然,该功能可以更好地完成工作,并且不需要特定的字体即可呈现文本。 而且,有趣的是,该函数接受的参数数量几乎与我们编写的参数数量相同。
就像您可能已经注意到的那样,现在有一个rect
参数,需要将其传递给矩形的值列表。 要创建一个矩形,我们调用pygame.Rect()
函数,并将其传递给4个值:宽度,高度和XY位置。
请记住,它是一个对象,除非将其添加到表面,否则它不会显示!
此处的矩形用于在其边界内调整文本大小。 因此,所有计算都是通过检查文本是否在矩形边界之外进行的。
我= 1
如果y + fontHeight>矩形底部:
打破
当Y位置在矩形外部时,此功能将停止。
如果文本太长而无法执行此操作,则会停止该功能。
i
变量是包裹文本的位置。
而font.size(text [:i])[0] <矩形宽度和i <len(text):
我+ = 1
这决定了行的最大大小。 循环直到文本位置在矩形外部。
如果我<len(文字):
i = text.rfind(“”,0,i)+1
当我们达到行的最大大小时,它会找到字符串中的最后一个空格并包装字符串。
如果bkg:
图片= font.render(text [:i],1,color,bkg)
image.set_colorkey(bkg)
这将显示带有轮廓的文本。 并没有真正的帮助,因此您可以随意不将其添加到代码中。
其他:
图片= font.render(文本[:i],aa,颜色)
如果选择不与轮廓一起呈现,则呈现文本。
现在, normal_message
变量应类似于以下内容:
normal_message = [screen,(255,255,255),pygame.Rect(30,400,1300,350),ubuntu,textsize ['normal']]
哦,别忘了此功能专门用于显示大文本。 让我们做一个显示短信的附加功能。
def display_message(表面,颜色,矩形,字体名称,大小,文本,xy,aa = False,bkg = None):
字体= pygame.font.Font(字体名称,大小)
render_text = font.render(文本,aa,(颜色))
screen.blit(rendered_text,(xy))
pygame.display.update()
(我在这里留下了rect
参数,以便不必更改normal_message
变量,尽管rect
在此函数中没有作用。)
这个功能差不多。 这非常简单,并且处理工作要比我们更好。 至少我们首先了解了它的工作原理! 首先,您要学习数学,然后使用计算器。
本教程就是这样。 感谢您的阅读!