저는 파이 게임으로 작업을 시작했으며 반투명 스프라이트를 만들기 위해 노력하고 있습니다. 스프라이트 소스 파일은 디스크에서로드 된 투명하지 않은 비트 맵 파일입니다. 내가 도울 수 있다면 나는 소스 이미지를 편집하고 싶지 않다. 파이 게임 코드로이 작업을 수행 할 수있는 방법이있을 것이라고 확신하지만 Google은 나에게 도움이되지 않습니다.파이 게임에서 반투명 스프라이트를 만드는 법
4
A
답변
2
내 원래의 질문에 명확하지 않은 수 있습니다,하지만 난 내 자신에 그것을 알아 냈다고 생각합니다. 내가 찾고 있던 것은 Surface의 set_alpha() 메소드 였으므로 반투명 이미지가 자신의 표면에 있는지 확인해야했습니다.
import pygame, os.path
from pygame.locals import *
class TranslucentSprite(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self, TranslucentSprite.container)
self.image = pygame.image.load(os.path.join('data', 'image.bmp'))
self.image = self.image.convert()
self.image.set_colorkey(-1, RLEACCEL)
self.rect = self.image.get_rect()
self.rect.center = (320,240)
def main():
pygame.init()
screen = pygame.display.set_mode((640,480))
background = pygame.Surface(screen.get_size())
background = background.convert()
background.fill((250,250,250))
clock = pygame.time.Clock()
transgroups = pygame.sprite.Group()
TranslucentSprite.container = transgroups
"""Here's the Translucency Code"""
transsurface = pygame.display.set_mode(screen.get_size())
transsurface = transsurface.convert(screen)
transsurface.fill((255,0,255))
transsurface.set_colorkey((255,0,255))
transsurface.set_alpha(50)
TranslucentSprite()
while 1:
clock.tick(60)
for event in pygame.event.get():
if event.type == QUIT:
return
elif event.type == KEYDOWN and event.key == K_ESCAPE:
return
transgroups.draw(transsurface)
screen.blit(background,(0,0))
screen.blit(transsurface,(0,0))
pygame.display.flip()
if __name__ == '__main__' : main()
이 최고의 기술이다 :
여기에 내 옷을 벗었 코드 예제가? 가장 간단하고 직설적 인 것 같습니다.
3
이미지를로드 한 후 Surface
에서 알파 채널을 사용하도록 설정해야합니다. 즉, 작은 같을 것이다
background = pygame.Display.set_mode()
myimage = pygame.image.load("path/to/image.bmp").convert_alpha(background)
이 이미지를로드하고 즉시 표시면 상에 알파 블렌딩에 적합한 픽셀 포맷으로 변환한다. 다른 포맷으로 화면 버퍼를 벗어나 다른 포맷으로 블릿해야하는 경우 다른 표면을 사용할 수 있습니다.
당신은, 당신은 픽셀 당 표면 변경할 수는 RGB 색상 값을 3 튜플을 받아 RGBA 색상 + 알파의 일부 원하는 4tuple을 반환하는 함수가 있다고 가정, 단순히 충분한 픽셀 당 알파를 설정할 수 있습니다:
를def set_alphas(color):
if color == (255,255,0): # magenta means clear
return (0,0,0,0)
if color == (0,255,255): # cyan means shadow
return (0,0,0,128)
r,g,b = color
return (r,g,b,255) # otherwise use the solid color from the image.
for row in range(myimage.get_height()):
for col in range(myimage,get_width()):
myimage.set_at((row, col), set_alphas(myimage.get_at((row, col))[:3]))
다른 유용한 방법이 있지만이 방법으로 아이디어를 얻을 수 있습니다.
1
이미지에 직접 원하는 모든 종류의 투명도를 수행 할 수있는 png 이미지 사용으로 전환하는 것이 좋습니다.
2
이미지가 투명하게 보이게하려면 단색 배경을 사용하고 color_key 값으로 설정하면 이미지를 블리팅 할 때 파이 게임이 투명하게됩니다.
예 :
color = image.get_at((0,0)) #we get the color of the upper-left corner pixel
image.set_colorkey(color)
관련 문제
- 1. 안드로이드에서 스프라이트를 만드는 법
- 2. 계속해서 스프라이트를 만드는 법 Cocos2d?
- 3. 파이 게임에서 이미지 변형
- 4. 파이 게임에서 파이 게임을 사용하는 파이썬으로 게임하기
- 5. J2ME 게임에서 스프라이트를 어떻게 관리합니까?
- 6. 파이 게임에서 사각형 격자 만들기
- 7. 파이 게임에서 코딩 오류가 있습니다.
- 8. 파이 게임에서 플레이어가 부드럽게 움직입니다.
- 9. 파이 게임에서 빠른 선 그리기
- 10. 파이 게임에서 팝업 창 만들기
- 11. 스프라이트를 만드는 방법
- 12. 롤 플레잉 게임에서 생명체를 서로 추적하는 법
- 13. 아이폰에 반투명 버튼을 만드는 방법은?
- 14. 파이 게임에서 하나 이상의 노래를 재생할 수 있다면 어떨까요?
- 15. 파이 게임에서 pgu gui 객체를 블리트 할 수있는 방법
- 16. 캐스팅 맵 만드는 법?
- 17. iphone의 스크롤보기 만드는 법
- 18. Doctrine에서 관계를 만드는 법
- 19. 스크롤바 만드는 법?
- 20. xml에 줄을 만드는 법
- 21. 자바에서 인터페이스를 만드는 법
- 22. 볼록한 다각형을 만드는 법
- 23. 8051 에뮬레이터 만드는 법
- 24. 라이트 박스를 만드는 법
- 25. MP3 플레이어 만드는 법?
- 26. UIWebView에서 UIImage를 만드는 법
- 27. 파이썬/파이 게임
- 28. imagemagick을 사용하여 반투명 이미지를 만드는 방법
- 29. 스프라이트를 만드는 방법 다른 스프라이트 뒤에서 이동
- 30. 파이 게임; C 확장 만들기