Pygame教程#2.1:精确的文字环绕方法。

在上一教程中,我描述了如何包装文本,这不够精确,并且存在无法解决的问题。 现在,我终于理解了找到的代码,现在我可以解释它是如何工作的。

链接到代码: 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在此函数中没有作用。)

这个功能差不多。 这非常简单,并且处理工作要比我们更好。 至少我们首先了解了它的工作原理! 首先,您要学习数学,然后使用计算器。

本教程就是这样。 感谢您的阅读!