我在屏幕上顯示文字似乎有問題 該代碼在屏幕上繪製文字,但'Score'的一半'S'因爲原因而被剪切。但是,如果我將screen.blit(text,self.score_rect,self.score_rect)更改爲screen.blit(text,self.score_rect),它會正常工作。我想知道爲什麼會發生這種情況,我該如何解決這個問題。pygame中正在切割的文字
謝謝。
下面的代碼:
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()
在什麼@jsbueno在說的簡單一點:塊傳輸需要兩個參數,表面和位置,其定位是一個元組,而不是外界的元組的兩個獨立的點,所以這是什麼意思是'屏幕。 blit(bg,5,5)'不起作用,但是'screen.blit(bg,(5,5)'將起作用,並且會將bg從像素點(5,5)開始繪製到屏幕上。使用'screen.blit(text,self.score_rect,self.score_rect)將表面切割得很短,但使用'self.score_rect'它會給出x,y座標和寬度以及高度,例子看起來像是' screen.blit(文字,(0,0,20,10)'我希望這有助於! – KodyVanRy
@ DuhProgrammer13它肯定做了,謝謝:) – Apoorv