Pygame screen.blit черный после смены режима - PullRequest
0 голосов
/ 26 декабря 2018

Я хочу показать разные pygame поверхности в разных режимах.Мой первый режим работает, но поверхности в последующих черных.Я не понимаю почему.

import pygame
import pygame.gfxdraw

screenWidth = 800
screenHeight = 800

path = (r"C:\Users\eeifler\Pictures\code drawings\35\trace.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()

1 Ответ

0 голосов
/ 26 декабря 2018

Ах.Я неправильно понял, как использовать 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().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...