2010-11-25 3 views
3

Windows Vista에서 VS2008을 사용하여 Windows Forms 응용 프로그램을 개발 중입니다. 나는 요 전날 Windows XP에서 응용 프로그램을 실행하려고 시도했지만 GUI의 모든 내용이 엉망이되었습니다. 나는 Windows Vista에서 120 Dpi 설정을 사용하여 응용 프로그램을 개발했고 XP는 96 dpi로 설정되었음을 깨달았습니다.Visual Studio 및 DPI 문제

내 응용 프로그램에 여러 UserControls가 있고 DPI를 96으로 변경하면 Visual Studio 자체가 축소 되어도 모두 사용할 수 있습니다. 현재 많은 사람들이 고해상도 DPI에서 Visual Studio를 사용하고 있습니다. 그렇다면 어떻게하면 Visual Studio와 런타임에서 GUI가 엉망이되지 않도록 할 수 있습니까?

편집 :이 문제에 대한 기사를 몇 개 읽었으며 AutoScaleMode를 없음으로 설정해야 함을 알게되었습니다. 그러나 이는 여전히 내 레이블이 운영 체제에서 적용되는 새로운 DPI 설정을 적용하는 것을 방해하지 않습니다. 다른 GUI 요소의 크기가 고정되어 있으므로 레이블이 커지거나 줄어들지 않게하는 방법이 필요합니다.

답변

0

이 문제에 대해 작업한지 얼마되지 않았지만 AutoSize = False로 설정해보십시오. 또한 UseCompatibleTextRendering = True가 도움이 될 수 있습니다.

0

이것은 다소 오래된 질문이지만 내 솔루션/의견을 공유하고 싶습니다. 최근 비슷한 문제가 발생했습니다. 사실, 나는 WinForms을 그대로 유지하면서 런타임시 확장 할 수 있기를 원합니다. 올바르게 수행하는 방법에 대한 일관된 요약을 찾지 못했습니다. 몇 가지 독서와 실험 후에 나는이 해결책에왔다 :

  • 양식의 AutoScaleMode = Font을 유지하십시오. 폼 디자이너에서
  • 설정 : 양식에서 Font = MS Sans; 11px
  • 는 ctor에이 InitializeComponent 후, 설정 : Font = SystemFonts.DefaultFont
  • 이 AutoScaleMode 남아 있기 때문에 매니페스트 또는 API 기능에 의해 SetProcessDPIAwareness

통해서, DPI 인식 사용 능동적 인 모든 DPI 변경 마술 작업, 심지어 모니터 별 DPI 인식. 여전히 남아있는 것은 크기 조정이 잘 작동하는 방식으로 양식을 디자인하는 것입니다.

내 블로그에 세부 사항을 작성했습니다 : http://www.sgrottel.de/?p=1581&lang=en