Приложение 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.

Другие вопросы по тегам