2011-02-07 1 views
2

C# 응용 프로그램 DPI를 인식하려고합니다. SetProcessDPIAware()라는 Windows API에서 사용할 수있는 명령이 있지만이 문제는 Windows Vista 이상에서만 작동하며 XP에서는 작동하지 않습니다. Windows 버전이 사용 된 것과 관계없이 올바르게 표시되도록 컨트롤, 단추 및 글꼴 DPI를 인식하는 방법은 무엇입니까?Windows XP에서 DPI 인식 응용 프로그램

+1

어떤 종류의 C# 응용 프로그램입니까? 이 Windows Forms입니까? –

+0

Windows Form 응용 프로그램. –

답변

6

SetProcessDPIAware을 호출해도 DPI가 당신을 위해 알아 차리는 모든 것을 마술처럼 만들어주는 것은 아닙니다. 그 목적은 귀하의 앱이 DPI를 인식하도록 올바르게 작성되었음을 Windows에 선언하는 것입니다. 게다가, 그것의 사용은 추천되지 않는다; 대신에 매니페스트에 DPI 인식을 선언해야합니다. 이것에 관해 MSDN에 전체 article가 있습니다.

+0

좋아, 내가 매니 페스트에서 DPI 인식을 선언하면 Windows XP에서도 제대로 작동할까요? –

+0

@zeemalik : 더 쉬운 해결책이있을 수 있습니다. 위의 내 의견에 주목하지 않았다면 잘 모르겠지만 개발중인 C# 응용 프로그램의 종류 *를 말할 수 있습니까? Windows Forms (WinForms) 또는 WPF를 사용하고 있습니까? –

+0

WPF가 아닌 Windows 양식 응용 프로그램이 있습니다. XP 및 Windows의 상위 버전에서 실행될 수 있다는 것을 명심하여 모든 컨트롤과 글꼴을 올바르게 표시하려면 어떻게해야합니까? –

2

this StackOverflow question에서 DPI 설정에 응답하는 응용 프로그램을 만드는 방법에 대한 중간 응답을 참조하십시오.

짧은 양식은 양식의 AutoScaleModeScaleMode.Dpi으로 변경할 수 있다는 것입니다.

하지만 ScaleMode.Font에 두는 것이 좋습니다. DPI가 증가함에 따라 글꼴이 커집니다.