Я использую python 2.7.1 с pygame 1.9.1 на 64-разрядном win7. Я использую код градиента от 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
Тогда вы можете использовать метод 'Surface.subsurface (rect)', чтобы получить только часть 'bg_surface'. – Ray