我似乎在屏幕上显示文字时遇到问题 代码在屏幕上绘制文字,但是一半的内容是在屏幕上显示的。分数'因为理由而被削减。 但是,如果我将screen.blit(text,self.score_rect,self.score_rect)更改为screen.blit(text,self.score_rect),它可以正常工作。我想知道为什么会发生这种情况,我该如何解决这个问题。
感谢。
以下是代码:
class Score(object):
def __init__(self, bg, score=100):
self.score = score
self.score_rect = pygame.Rect((10,0), (200,50))
self.bg = bg
def update(self):
screen = pygame.display.get_surface()
font = pygame.font.Font('data/OpenSans-Light.ttf', 30)
WHITE = (255, 255, 255)
BG = (10, 10, 10)
score = "Score: " + str(self.score)
text = font.render(score, True, WHITE, BG)
text.set_colorkey(BG)
screen.blit(
self.bg,
self.score_rect,
self.score_rect)
screen.blit(text,
self.score_rect,
self.score_rect)
def main():
pygame.init()
#initialize pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption('Score Window')
#initialize background
bg = pygame.Surface((screen.get_size())).convert()
bg.fill((30, 30, 30))
screen.blit(bg, (0, 0))
#initialize scoreboard
score_board = Score(bg)
while True:
for event in pygame.event.get():
if event.type == QUIT:
exit(0)
score_board.update()
pygame.display.flip()
答案 0 :(得分:0)
嗯 - 它看起来像调用的第三个参数做blit
,你重复core_rect`参数的设计完全是为了做到这一点:它选择了一个矩形区域
将源图像(在本例中为渲染文本)粘贴到目标中(在本例中为屏幕)。
Pygame中的文本以良好的边距渲染,你根本不应该使用source-crop参数 - 如果你瘦了,你应该传递一组适当的坐标,在渲染文本内部相关,而不是与之相关的坐标。屏幕上的目的地坐标。
来自http://www.pygame.org/docs/ref/surface.html#pygame.Surface.blit:
blit()将一个图像绘制到另一个blit上(source,dest,area = None, special_flags = 0) - > Rect将源Surface绘制到此Surface上。 可以使用dest参数定位绘图。 Dest可以是 表示源的左上角的坐标对。 Rect也可以作为目标和topleft角传递 矩形将用作blit的位置。的大小 目标矩形不会影响blit。
也可以传递可选的区域矩形。这代表了一个 要绘制的源曲面的较小部分。 ...