2014-04-17 52 views
0

我在屏幕上顯示文字似乎有問題 該代碼在屏幕上繪製文字,但'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() 
+0

在什麼@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

+0

@ DuhProgrammer13它肯定做了,謝謝:) – Apoorv

回答

0

好 - 它看起來像在電話會議上的第三個參數做blit,在那裏你重複core_rect`參數的設計正是這樣做的:它在選擇一個矩形區域 源圖像(在這種情況下爲您的渲染文本)將被粘貼到目的地(在這種情況下,屏幕)。

Pygame中的文本渲染的邊距不錯,你根本不需要source-crop參數 - 如果你想要做,你應該傳遞一組適當的座標,在渲染文本中相關,不是矩形與屏幕上的目標座標。

http://www.pygame.org/docs/ref/surface.html#pygame.Surface.blit

的blit()繪製一個圖像到另一個位塊傳送(源,DEST,面積=無, special_flags = 0) - >矩形繪製源表面到該表面上。 可以使用dest參數定位繪圖。 Dest可以是 一對代表源的左上角的座標。 也可以將Rect作爲目的地,並將 的頂點轉角作爲blit的位置。 目標矩形的大小不影響blit。

可選的區域矩形也可以傳遞。這表示要繪製的源表面的較小部分。 ...