0

我正在尝试使用这条线将文本粘贴到我的表面上:

surface.blit(myFont.render(text, 1, text_color),(200,200))

但我得到一个错误:TypeError:找不到所需的参数'dest'(pos 2)

我似乎无法弄清楚为什么会这样......

4

3 回答 3

0

您没有将正确的 rect 作为 surface.blit() 函数的第二个参数。它必须是一个矩形。我建议如下:

text=myFont.render(text, 1, text_color)
rect=text.get_rect()
rect.topleft=(200, 200)
surface.blit(text, rect)

要在一行代码中完成所有操作,可能会有点复杂:

surface.blit(myFont.render(text, 1, text_color), pygame.Rect(200, 200, myFont.render(text, 1, text_color).get_rect().width, myFont.render(text, 1, text_color).get_rect().height)

如果您希望它位于中心的 200、200,那么简单的多行代码将如下所示:

text=myFont.render(text, 1, text_color)
rect=text.get_rect()
rect.centerx=200
rect.centery=200
surface.blit(text, rect)

为了在一行中完成,它会变得非常长:

surface.blit(myFont.render(text, 1, text_color), pygame.Rect(200-myFont.render(text, 1, text_color).get_rect().width/2, 200-myFont.render(text, 1, text_color).get_rect().height/2, myFont.render(text, 1, text_color).get_rect().width, myFont.render(text, 1, text_color).get_rect().height)

正如您所看到的,在五行代码中完成它会比您尝试做的一行代码要容易得多,而且它可能也会更快。基本上你必须为一行做的是渲染文本并为矩形的每个参数获取它的矩形以避免错误。这将需要很长时间,特别是如果您将其放入循环中。如果你正在加载,它可能没问题,但我仍然会推荐多行。

于 2012-09-01T15:52:51.213 回答
0

我发现了错误...

我试图将 myFont 的大小设置为浮点类型。它似乎不喜欢那样!:)

于 2012-08-27T10:26:07.140 回答
-1

Surface.blit(source, dest, area=None, special_flags = 0): return Rect

您没有将要绘制的表面设置为参数。
阅读有关Surface.blit的文档以获取更多信息

于 2012-08-27T08:44:06.920 回答