2014-12-11 3 views
1

나는 파이 게임으로 작은 게임을 만들고 있습니다. 나는 게임의 창을 모니터 해상도의 크기로 만들고 싶다. 내 컴퓨터 화면의 해상도는 1920x1080이고 display.info는 창 크기도 1920x1080이라고 말합니다. 그러나 실행하면 화면 크기의 약 1.5 배 정도의 창을 만듭니다.파이 게임 display.info 잘못된 해상도 크기를 제공

import pygame, sys 

def main(): 
    #set up pygame, main clock 
    pygame.init() 
    clock = pygame.time.Clock() 

    #creates an object with the computers display information 
    #current_h, current_w gives the monitors height and width 
    displayInfo = pygame.display.Info() 

    #set up the window 
    windowWidth = displayInfo.current_w 
    windowHeight = displayInfo.current_h 
    window = pygame.display.set_mode ((windowWidth, windowHeight), 0, 32) 
    pygame.display.set_caption('game') 

    #gameLoop 
    while True: 
     window.fill((0,0,0)) 
     for event in pygame.event.get(): 
      if event.type == pygame.QUIT: 
       pygame.quit() 
       sys.exit() 

     #draw the window onto the screen 
     pygame.display.flip() 
     clock.tick(60) 

main() 
+0

'pygame.display.set_mode ((windowWidth, windowHeight), pygame.FULLSCREEN, 32)' – martineau

+0

나는 창 화면이 더 좋을 것입니다. 파이 게임이 왜 더 큰 화면을 제공하는지 이해하고 싶습니다. display.info가 현재 화면 해상도를 잡을 때. – Brian

+0

문서는 "전달 된 인수는 표시 유형에 대한 요청이므로 실제 생성 된 표시는 시스템에서 지원하는 최상의 일치입니다"라고 말합니다. 요청하시는 1920x1080과 비교할 때 제공되는 것의 크기는 정확히 무엇입니까? 대형 화면 (디스플레이와 동일)은 전체 화면 모드를 사용하는 것이므로 다른 값을 선택하는 유일한 방법이라고 생각합니다. – martineau

답변

1

나는 동일한 문제를 겪어 왔으며 그 대답을 발견하고이를 here에 게시했습니다. 다음과 같이 내가 찾은 답은



나는이 문제를 설명하고이를 해결하는 방법에 대한 예제를 제공 여기에 파이 게임의 bitbucket 페이지에 커밋 찾을 수 있었다.

일부 PPI (픽셀 당 인치) 디스플레이에서 작게 보이지 않도록 창을 늘 이도록 일부 디스플레이 환경을 구성 할 수 있습니다. 이 스트레칭은 실제 해상도보다 더 큰 해상도의 디스플레이가 표시되는 원인입니다.

이 링크는 내가이 문제를 해결하는 방법을 보여주는 페이지에 예제 코드를 제공합니다.

그들은하는 ctypes를 가져오고이를 호출하여 문제를 해결 :

ctypes.windll.user32.SetProcessDPIAware() 

그들은 또한 이것은 Windows 전용 솔루션이며 파이썬 2.4부터 기본 파이썬에서 사용할 수 있음을 표현한다. 그 전에 설치해야합니다. 그와

는이 일을이 당신을하는 데 도움이 다른 사람이 누가 발견 나는 희망



import ctypes 
ctypes.windll.user32.SetProcessDPIAware() 
# 
# # # Anywhere Before 
# 
pygame.display.set_mode(resolution) 
) (어디 pygame.display.set_mode하기 전에 코드의이 비트를 넣어 말했다 그들은 같은 문제가 있습니다.