Я хочу, чтобы мое приложение C # знало DPI. В Windows API доступна команда SetProcessDPIAware (), но проблема в том, что она работает только в Windows Vista и более поздних версиях Windows, а не в XP. Как сделать так, чтобы элементы управления, кнопки и шрифты распознавали DPI, чтобы они отображались правильно независимо от того, какая версия Windows используется?
Приложение с поддержкой DPI в Windows XP
comment
Что за приложение C #? Это Windows Forms?
- person Cody Gray   schedule 07.02.2011
Ответы (2)
Вызов SetProcessDPIAware
не просто волшебным образом делает все, что связано с DPI; его цель - объявить Windows, что ваше приложение было правильно написано для поддержки DPI. Кроме того, его использование не рекомендуется; вместо этого вы должны объявить осведомленность о DPI в своем манифесте. Об этом есть целая статья об этом в MSDN. .
person
Aaron Klotz
schedule
07.02.2011
Хорошо, если я объявлю поддержку DPI в манифесте, будет ли это работать и для Windows XP?
- person zeeshan malik; 08.02.2011
@zeemalik: Может быть, есть более простое решение. Я не уверен, что вы не заметили мой комментарий выше, но можете ли вы рассказать нам, какой вид приложения C # вы разрабатываете? Вы используете Windows Forms (WinForms) или WPF?
- person Cody Gray; 08.02.2011
У нас есть приложение для окон, а не WPF. Как сделать так, чтобы все элементы управления и шрифты отображались правильно, имея в виду, что он может работать в Windows XP и более поздних версиях?
- person zeeshan malik; 08.02.2011
Может ли кто-нибудь помочь в этом отношении?
- person zeeshan malik; 09.02.2011
См. Мой умеренно подробный ответ о том, как заставить приложение реагировать на настройки DPI на этот вопрос StackOverflow.
Вкратце, вы можете изменить AutoScaleMode
всей формы на ScaleMode.Dpi
.
Но лучше оставить на ScaleMode.Font
; шрифты становятся больше по мере увеличения DPI.
person
Ian Boyd
schedule
03.04.2011