64 비트 win7에서 파이 게임 2.7.1과 파이 게임 1.9.1을 사용하고 있습니다. 내 배경을 그릴 때 http://www.pygame.org/wiki/GradientCode의 그라디언트 코드를 사용하고 있습니다. 다음과 같이 텍스트를 표시합니다.파이 게임에서 그라데이션 배경에 텍스트를 다시 그리는 방법은 무엇입니까?
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()
이것이 가장 좋은 방법이 될 것인가 (코드 그 작품)? 아니면 이것을 할 수있는 더 좋은 방법이 있습니까?
도움 주셔서 감사합니다.
이 모든 것을 지워집니다. 카운트 다운 텍스트 영역 만 지우고 싶습니다. 나는 카운트 다운 텍스트뿐만 아니라 화면에 다른 것들을 가지고있다. – dcr
그러면'Surface.subsurface (rect)'메서드를 사용하여'bg_surface'의 일부만 얻을 수 있습니다. – Ray