/ / Wymuś pełną rozdzielczość ekranu, która nie jest zawarta w display.list_modes () - python, pygame

Wymuś rozdzielczość pełnoekranową, która nie jest zawarta w display.list_modes () - python, pygame

Robię symulację dla szkoły i próbujęaby pygame utworzył pełnoekranowy ekran w mojej rodzimej rozdzielczości. Mam jednak ekran QHD (2560x1440) i nie działa on poprawnie. O ile wiem, pygame renderuje ekran w odpowiedniej rozdzielczości, ale rozszerza go tak, że jest skalowany tak, jakby był 1080p, więc około 300-400 pikseli jest odciętych wokół krawędzi, co powoduje, że na przykład koło renderowane w (200,200) jest całkowicie niewidoczne. nie jest wymieniony w pygame.display.list_modes ()). Czy jest jakiś sposób, aby zmusić go do działania? Wolałbym, gdybym mógł użyć mojej rzeczywistej rozdzielczości zamiast przeskalowanej 1080p.

Oto kod, który inicjuje okno:

import pygame
from pygame.locals import *
pygame.init()
w = pygame.display.Info().current_w
h = pygame.display.Info().current_h
S = pygame.display.set_mode((w,h), pygame.FULLSCREEN)

Odpowiedzi:

0 dla odpowiedzi № 1

Jeśli używasz systemu Windows, upewnij się, że w swoimustawienia wyświetlania mają skalowanie ustawione na 100%. To sprawi, że twój tekst i wszystko mniejsze, jeśli nie masz go w tej chwili, ale myślę, że okna Pygame zostaną dotknięte tym numerem z jakiegoś powodu.

Zobacz poniższy fragment kodu, aby upewnić się, że okno jest poprawnie skalowane. Zobacz także tutaj.

import pygame
from ctypes import windll

def run():
# Force windows to ignore the display scaling value.
windll.user32.SetProcessDPIAware()

pygame.display.init()

# Make the screen the highest resolution that will fit the screen at 100% scaling.
screen = pygame.display.set_mode(pygame.display.list_modes()[0])

done = False
while not done:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
done = True

pygame.display.flip()

pygame.quit()

if __name__ == "__main__":
run()