복붙노트

[PYTHON] 파이 게임에 투명한 직사각형을 그립니다.

PYTHON

파이 게임에 투명한 직사각형을 그립니다.

어떻게하면 알파가있는 색상의 사각형을 그릴 수 있습니까? 나는 가지고있다:

windowSurface = pygame.display.set_mode((1000, 750), pygame.DOUBLEBUF)
pygame.draw.rect(windowSurface, pygame.Color(255, 255, 255, 128), pygame.Rect(0, 0, 1000, 750))

그러나 흰색 사각형을 50 % 투명하게하려면 알파 값이 작동하지 않는 것처럼 보입니다.

해결법

  1. ==============================

    1.pygame.draw 함수는 알파로 그리지 않습니다. 문서에 의하면 :

    pygame.draw 함수는 알파로 그리지 않습니다. 문서에 의하면 :

    당신이 할 수있는 것은 두 번째 서피스를 생성 한 다음 그것을 화면에 블릿 (blit)하는 것입니다. 블리 팅은 알파 블렌딩 및 색상 키를 수행합니다. 또한 표면 레벨 (더 빠르고 더 적은 메모리)이나 픽셀 레벨 (느리지 만 더 정확한)에서 알파를 지정할 수 있습니다. 다음 중 하나를 수행 할 수 있습니다.

    s = pygame.Surface((1000,750))  # the size of your rect
    s.set_alpha(128)                # alpha level
    s.fill((255,255,255))           # this fills the entire surface
    windowSurface.blit(s, (0,0))    # (0,0) are the top-left coordinates
    

    또는,

    s = pygame.Surface((1000,750), pygame.SRCALPHA)   # per-pixel alpha
    s.fill((255,255,255,128))                         # notice the alpha value in the color
    windowSurface.blit(s, (0,0))
    

    첫 번째 경우에는 사용자가 지정한 다른 값이 지정한 알파 값으로 blitted됩니다. 예를 들어 오버레이 컨트롤을 그릴 때이 방법을 사용한다면 두 번째 대안을 사용하는 것이 더 나을 것입니다.

    또한 pygame.HWSURFACE를 사용하여 표면을 하드웨어 가속으로 만들 것을 고려하십시오.

    파이 게임 사이트에서 Surface 문서, 특히 소개를 확인하십시오.

  2. ==============================

    2.알파를 나타 내기 위해 네 번째 값을 색상 튜플에 추가 할 수 있습니다.

    알파를 나타 내기 위해 네 번째 값을 색상 튜플에 추가 할 수 있습니다.

    pygame.draw.rect(windowSurface, (255, 255, 255, 127), pygame.Rect(0, 0, 1000, 750))
    
  3. from https://stackoverflow.com/questions/6339057/draw-a-transparent-rectangle-in-pygame by cc-by-sa and MIT license