我正在尝试使用以下行将文本blit到我的表面上:
surface.blit(myFont.render(text, 1, text_color),(200,200))
但是我收到一个错误:TypeError:找不到必需参数'dest'(pos 2)
我似乎无法弄清楚为什么会这样......
答案 0 :(得分:0)
我发现了错误......
我尝试将Font的大小设置为float类型。它似乎不喜欢那样! :)
答案 1 :(得分: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)
正如您所看到的,在五行代码中执行此操作要容易得多,而不是像您尝试的那样执行一行,并且它可能会更快。基本上你必须为一行做的是渲染文本并为rect的每个参数获取其rect以避免错误。这将花费很长时间,特别是如果你把它放入循环中。如果您正在进行加载,它可能没问题,但我仍然会推荐多行。
答案 2 :(得分:-1)
Surface.blit(source, dest, area=None, special_flags = 0): return Rect
您没有将要绘制的曲面设置为参数。
有关详细信息,请阅读有关Surface.blit的文档