Pygame屏幕.模式更改后为黑色



我想在不同的模式下显示不同的pygame表面。我的第一个模式有效,但后续模式中的表面是黑色的。我不明白为什么。

import pygame
import pygame.gfxdraw
screenWidth = 800
screenHeight = 800
path = (r"C:UserseeiflerPicturescode drawings35trace.PNG")
imageFile = pygame.image.load(path)
imageFile = pygame.transform.scale(imageFile, (screenWidth,screenHeight))
pygame.init()
screen = pygame.display.set_mode((screenWidth, screenHeight))
running = True
quadrent = 1
while running:
    screen.blit(imageFile, (0,0))
    cropped = pygame.Surface((screenWidth//2, screenHeight//2))      

    if quadrent == 1:
        cropped.blit(screen, (0,0), pygame.Rect( 0, 0, screenWidth//2, screenHeight//2))
        bottomLeft = pygame.transform.flip(cropped, False, True)
        screen.blit(bottomLeft, pygame.Rect(0,screenHeight//2,screenWidth//2,screenHeight//2))
        topRight = pygame.transform.flip(cropped,True,False)
        screen.blit(topRight, pygame.Rect(screenWidth//2,0,screenWidth//2, screenHeight//2))
        bottomRight = pygame.transform.flip(cropped, True, True)
        screen.blit(bottomRight, pygame.Rect(screenWidth//2,screenHeight//2, screenWidth//2, screenHeight//2))
    if quadrent == 2:
        cropped.blit(screen, (screenWidth//2,screenHeight//2), pygame.Rect( screenWidth//2, 0, screenWidth//2, screenHeight//2))
        topLeft = pygame.transform.flip(cropped, False, True)
        screen.blit(topLeft, pygame.Rect( 0, 0, screenWidth//2, screenHeight//2))
        bottomLeft = pygame.transform.flip(cropped, True, True)
        screen.blit(bottomLeft, pygame.Rect(0,screenHeight//2,screenWidth//2,screenHeight//2))
        bottomRight = pygame.transform.flip(cropped, True, True)
        screen.blit(bottomRight, pygame.Rect(screenWidth//2,screenHeight//2, screenWidth//2, screenHeight//2))

    #if quadrent == 3:
        #cropped.blit(screen, (0,0), pygame.Rect( 0, screenHeight//2, screenWidth//2, screenHeight//2))
    #if quadrent == 4:
        #cropped.blit(screen, (0,0), pygame.Rect(screenWidth//2,screenHeight//2, screenWidth, screenHeight))
    key = pygame.key.get_pressed()
    if key[pygame.K_a]:
        quadrent = 1
    if key[pygame.K_s]:
        quadrent = 2
    if key[pygame.K_d]:
        quadrent = 3
    if key[pygame.K_f]:
        quadrent = 4
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    pygame.display.flip()

啊。我误解了如何使用surface.blit

cropped.blit(screen, (screenWidth//2,screenHeight//2), pygame.Rect( screenWidth//2, 0, screenWidth//2, screenHeight//2))

应该是

cropped.blit(screen, (0,0), pygame.Rect( screenWidth//2, 0, screenWidth//2, screenHeight//2))

以指定到新曲面的左上角。决定裁剪的部分发生在pygame.Rect()部分。

最新更新