[Windows] 디스플레이 배율에 관한 고찰 Computer Tip

다른 리눅스나 맥도 마찬가지 이지만,
화면(디스플레이)의 두 가지 보여주는 인자가 
존재하는데 하나는 해상도이고 다른 하나는 배율(스케일)에
관한 것입니다.

해상도야 그래픽카드와 모니터에 따라 지원되는 최대 해상도에서
더 작은 것으로 선택을 하면 됩니다만, 요즘처럼 FHD 보다 큰
해상도에서는 맥에서 이야기하는 레티나처럼 지원되기 위해서는
윈도우에서는 배율을 100% 보다 크게 하여 해상도가 크더라도
보여지는 것은 더 알맞고 이쁘게 보여지게 됩니다.

그런데 필요에 따라 이 배율을 프로그램으로 가져와야 하는데,
이것을 딱 가져오게 하는 것이 나오지 않더군요..

약간의 시행착오를 거쳐 알아낸 방법은,

만약 위와 같이 150%로 설정을 한 경우에는,

레지스트리에서 "컴퓨터\HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics" 키의
AppliedDPI 서브키를 읽어 이를 96으로 나누고 100을 곱하면 위의 150%가 나오게 됩니다.

이를 파이썬 코드로 구현해보면 다음과 같습니다. (파이썬 3.7)

import os, winreg
proc_arch = os.environ['PROCESSOR_ARCHITECTURE'].lower()
proc_arch64 = os.environ['PROCESSOR_ARCHITEW6432'].lower()

if proc_arch == 'x86' and not proc_arch64:
    arch_key = 0
elif proc_arch == 'x86' or proc_arch == 'amd64':
    arch_key = winreg.KEY_WOW64_64KEY
else:
    raise Exception("Unhandled arch: %s" % proc_arch)

key = winreg.OpenKey(winreg.HKEY_CURRENT_USER,
                     r"Control Panel\Desktop\WindowMetrics", 0,
                     winreg.KEY_READ | arch_key)
try:
    dn = winreg.QueryValueEx(key, 'AppliedDPI')
    print(dn[0]//96*100)
finally:
    key.Close()


어느 분께는 도움이 되셨기를 ..



덧글

댓글 입력 영역

구글애드텍스트