Visual Studio и проблема DPI

Я занимаюсь разработкой приложения для Windows Forms с использованием VS2008 в Windows Vista. Я попытался запустить мое приложение на Windows XP на днях, и все в GUI было испорчено. Я понял, что разработал приложение, используя настройку 120 точек на дюйм в Windows Vista, и моя XP была установлена ​​на 96 точек на дюйм.

В моем приложении есть несколько пользовательских элементов управления, и все они сжимаются даже в самой Visual Studio, если я меняю DPI на 96. Я уверен, что многие люди используют Visual Studio в эти дни с высоким DPI. Так как же убедиться, что мой графический интерфейс не испортился как в Visual Studio, так и во время выполнения?

РЕДАКТИРОВАТЬ: я прочитал несколько статей по этой проблеме, и я узнал, что я должен установить AutoScaleMode в None. Тем не менее, это по-прежнему не мешает моим меткам адаптировать новые настройки DPI, установленные операционной системой. Мне нужен способ предотвратить рост / сжатие моих ярлыков, потому что другие элементы GUI имеют фиксированные размеры.

2 ответа

Прошло много времени с тех пор, как я работал над этой проблемой, но попробуйте установить AutoSize = False. Кроме того, UseCompatibleTextRendering = True может помочь.

Это довольно старый вопрос, но я хочу поделиться своим решением / мнением. Недавно я столкнулся с подобной проблемой. На самом деле, я хочу, чтобы Visual Studio оставлял свои WinForms такими, какие они есть, но масштабировал их во время выполнения. Я не нашел последовательного резюме о том, как правильно сделать это. После некоторого чтения и экспериментов я пришел к этому решению:

  • Сохранить форму AutoScaleMode = Font,
  • Установите в своем дизайнере форм: Font = MS Sans; 11px
  • В формах Ctor, после InitializeComponent, задавать: Font = SystemFonts.DefaultFont
  • Включить DPI-Awareness либо через манифест, либо через функцию API SetProcessDPIAwareness

Так как AutoScaleMode остается активным, все волшебство, изменяющее DPI, работает, даже понимание DPI для каждого монитора. Что остается, так это дизайн форм таким образом, что масштабирование работает хорошо.

Я написал подробности в своем блоге: http://www.sgrottel.de/?p=1581&lang=en

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