我在64位win7上使用python 2.7.1和pygame 1.9.1。我使用http://www.pygame.org/wiki/GradientCode的漸變代碼來繪製我的背景。我然後顯示文字,如下所示:如何在pygame中重繪漸變背景上的文字?
countText = font.render("%d" % secs_left, 1, (255, 0, 0))
countRect = countText.get_rect()
countRect.y, countRect.centerx = yPos, screen.get_rect().width/2
screen.blit(countText, countRect)
pygame.display.flip()
我用它來顯示倒數計時器,但問題是數字相互繪製。我可以在font.render()調用中指定一個背景顏色來解決這個問題,但後來我發現另一個問題,即純色背景與漸變背景不匹配。
我認爲這可以通過在另一個表面保存一個漸變背景的副本,然後在繪製下一個數字之前將保存的表面的相關部分繪製到背景上來解決,但我不知道如何做到這一點。
我可以節省這樣的漸變背景的副本:
# save a surface with same size and gradient as background
bg_image = pygame.Surface(screen.get_size())
fill_gradient(bg_image, BG_COLOR, GRADIENT_COLOR)
但是我怎麼選擇bg_image的相關部分,它借鑑到我的主屏幕背景?我想這樣的事情,做一個screen.blit(),試圖阻擊器的新號碼之前刪除當前的倒計時數字,但它不工作:
countText = usefont.render("%d" % secs_left, 1, (255, 0, 0))
countRect = countText.get_rect()
countRect.y, countRect.centerx = yPos, screen.get_rect().width/2
screen.blit(bg_image, (0,0), countRect)
screen.blit(countText, countRect)
pygame.display.flip()
這將是最好的方法(與代碼這樣可行)?還是有更好的方法來做到這一點?
感謝您的幫助。
塊傳輸bg_surface時,這將刪除所有內容。我想只刪除倒數文本區域。我在屏幕上還有其他東西,不僅僅是倒計時文字。 – dcr 2012-03-27 19:40:33
然後你可以使用'Surface.subsurface(rect)'方法來獲取'bg_surface'的一部分。 – Ray 2012-03-29 05:32:22