2010-11-25 4 views
3

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

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

EDIT: Я прочитал пару статей по этой проблеме, и я узнал, что должен установить AutoScaleMode в None. Однако это все еще не мешает моим ярлыкам адаптировать новые параметры DPI, установленные операционной системой. Мне нужно, чтобы мои ярлыки увеличивались/сокращались, потому что другие элементы GUI имеют размеры исправлений.

ответ

0

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

0

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

  • Хранить форму AutoScaleMode = Font.
  • Набор в вашем Forms Designer: Font = MS Sans; 11px
  • в формах CTOR после InitializeComponent, установите: Font = SystemFonts.DefaultFont
  • Включить DPI-Awareness, либо через манифеста или функции API SetProcessDPIAwareness

Поскольку AutoScaleMode остается активен, все волшебные работы, изменяющие DPI, даже осознание DPI на мониторе. Что остается, разрабатывает Формы таким образом, что масштабирование работает хорошо.

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