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

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

3 голосов
/ 25 ноября 2010

Я занимаюсь разработкой приложения для 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, установленные операционной системой. Мне нужен способ предотвратить рост / сжатие моих ярлыков, поскольку другие элементы графического интерфейса имеют фиксированные размеры.

Ответы [ 2 ]

0 голосов
/ 21 декабря 2016

Это довольно старый вопрос, но я хочу поделиться своим решением / мнением. Недавно я столкнулся с подобной проблемой. На самом деле, я хочу, чтобы 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

0 голосов
/ 02 ноября 2011

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

...