Приложение DPI Aware в Windows XP
Я хочу, чтобы мой DPI приложения C# знал. В Windows API есть команда, которая называется SetProcessDPIAware(), но проблема в том, что она работает только в Windows Vista и более поздних версиях Windows, а не в XP. Как сделать так, чтобы элементы управления, кнопки и шрифты DPI знали, чтобы они отображались правильно, независимо от того, какая версия Windows используется?
2 ответа
Призвание SetProcessDPIAware
не просто волшебно делает все, что DPI знает для вас; его цель - объявить Windows, что ваше приложение правильно написано для поддержки DPI. Кроме того, его использование не рекомендуется; вместо этого вы должны объявить осведомленность о DPI в своем манифесте. Есть целая статья об этом на MSDN.
См. Мой подробный ответ о том, как заставить приложение реагировать на настройки DPI, в этом вопросе Stackru.
Короткая версия заключается в том, что вы можете изменить все свои формы AutoScaleMode
в ScaleMode.Dpi
,
Но лучше оставить на ScaleMode.Font
; Шрифты становятся больше по мере увеличения DPI.