또는 파이 게임의 폴리곤을 이미지로 채우는 방법은 무엇입니까?파이 게임 (Pygame)에서 어떻게 이미지를 폴리곤 모양으로 늘릴 수 있습니까?
설명서를 검색해 보았지만 많이 돌아 가지 않았으므로 여기에 무엇이든 놓친 것인지 묻습니다. 필요한 경우 변환 행렬을 사용할 수 있습니다.
또는 파이 게임의 폴리곤을 이미지로 채우는 방법은 무엇입니까?파이 게임 (Pygame)에서 어떻게 이미지를 폴리곤 모양으로 늘릴 수 있습니까?
설명서를 검색해 보았지만 많이 돌아 가지 않았으므로 여기에 무엇이든 놓친 것인지 묻습니다. 필요한 경우 변환 행렬을 사용할 수 있습니다.
나는 당신이 찾고있는 개념이 비트 맵 마스크 생각 :
는 여기에 내가 무엇을 달성하고자하는의 예입니다. 특수 블렌딩 모드 인 pygame.BLEND_RGBA_MULT
을 사용하면 을 혼합 할 수 있습니다. 두 표면의 내용물을 함께 사용합니다. 여기서 블렌딩이란 두 개의 해당 픽셀의 색상 값을 단순히 곱하여 새로운 색상 값을 얻는 것입니다. 이 곱셈은 정규화 된 RGB 색상에서 이루어 지므로 흰색 ((255, 255, 255)
은 실제로 (1.0, 1.0, 1.0)
으로 변환 된 다음 마스킹 표면과 마스크 된 표면 픽셀 간의 곱셈이 수행 된 후 정규화되지 않은 RGB 색상으로 다시 변환됩니다. .
이 경우 모든 것은 폴리곤을 한면에 그려야하고, 관심있는 이미지를 다른면에 그리고, 두면을 결합하여 최종 결과를 화면에 렌더링해야한다는 것입니다. .
import pygame
import sys
(width, height) = (800, 600)
pygame.init()
screen = pygame.display.set_mode((width, height))
image = pygame.image.load("test.png").convert_alpha()
masked_result = image.copy()
white_color = (255, 255, 255)
polygon = [(0, 0), (800, 600), (0, 600)]
mask_surface = pygame.Surface((width, height))
pygame.draw.polygon(mask_surface, white_color, polygon)
pygame.draw.aalines(mask_surface, white_color, True, polygon)#moderately helps with ugly aliasing
masked_result.blit(mask_surface, (0, 0), None, pygame.BLEND_RGBA_MULT)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
screen.blit(masked_result, (0, 0))
pygame.display.update()
이 마스크 같은 간단한 삼각형을 이용하여 같은 결과는 보이는: 그냥 수행하는 코드 0
몇 가지 참고 사항 :
pygame.mask
모듈을 사용하지 않습니다!답변을 주셔서 감사합니다. 앞으로는 유용 할 것으로 생각됩니다. 그러나 그것은 제가 묻고있는 것이 아닙니다. 나는 이미지를 펴고, 잘라 내지 않는 것을 의미했습니다. 제 질문이 불분명하면 사과드립니다. 내가 의미하는 것을 설명하기 위해 그림을 추가 할 것입니다. –
예 그림이 1000 단어이므로 확실히 하나 추가하십시오!나는 당신이 당신의 초기 질문에서 의미하는 바를 완전히 확신하지 못했습니다. – CodeSurgeon
PyGame에서 이미지가있는 폴리곤은 어디에서 발견 되었습니까 ??? 아니면 OpenGL을 의미 할 수도 있습니다. – furas
@furas 응? 아니요, 저는 파이 게임을 의미한다고 확신합니다. –
업데이트 및 이미지보기 **는 파이 게임에서만 혼자 할 수 있습니다. PIL을 사용하여 [this] (http://stackoverflow.com/a/14178717/2588654) 대답을 살펴볼 수도 있습니다. PIL/pillow로 이미지를로드하고 거기에서 변환을 수행 한 다음 PIL 이미지를 파이 게임 이미지로 변환 할 수 있습니다. 또는 Pygame과 함께 PyOpenGL을 사용할 수 있습니다. 그러나 임의의 변환 행렬을 전달하여 이미지를 회전시킬 수는 있지만, 이는 pygame의 SDL 렌더링 모델의 많은 다른 점을 잃어 버릴 수 있습니다. 이것이 도움이되는지 또는 여전히 불분명한지 알려주십시오. – CodeSurgeon