我将对象的类fences
定义如下:
class GeoFence(pygame.sprite.Sprite):
def __init__(self, rect, risk_level, *groups):
self._layer = 1
pygame.sprite.Sprite.__init__(self, groups)
self.image = pygame.surface.Surface((rect.width, rect.height))
self.image.fill(GREEN)
self.rect = rect
self.risk_level = risk_level
self.font = pygame.font.SysFont('Arial', 25)
screen.blit(self.font.render(risk_level, True, (255,0,0)), (200, 100))
每个对象fence
都是一个绿色矩形。我想在这个矩形内显示一个文本。文本由一个字符串risk_level
定义,该字符串从列表risks
中随机选择。在
此代码不会失败,但标题不会显示在屏幕上的任何位置。在
问题是,当创建精灵时,
screen
曲面的坐标(200, 100)
处的文本是blitting的,因此在下一帧中清除屏幕时,文本将消失。在为了在
GeoFence
对象上blit文本,您需要将其blit到self.image
上的坐标(0, 0)
(如果它应该左上对齐的话)。在如果曲面应该适合文本的大小,则可以先呈现文本表面,并将其大小用作
self.image
曲面的大小。在也可以向^{} 传递另一种颜色,该颜色将用作背景色。这样可以使代码稍微缩短一点:
^{pr2}$如果要使文本居中,请为文本创建另一个rect,将其
center
坐标设置为self.rect.center
,然后将其用作文本的blit位置。执行此操作时,self.rect
仍应处于默认位置(0,0)。在相关问题 更多 >
编程相关推荐