Поддержка изменений DPI и шрифтов по умолчанию

Итак, я пытаюсь выяснить, как свойство Form AutoScaleMode может помочь поддерживать систему с шрифтом или DPI, который отличается от моей машины разработки работы.

Из SDK:

Перечисление AutoScaleMode

public enum AutoScaleMode

None  
   Automatic scaling is disabled.    
Font   
   Controls scale relative to the dimensions of the 
   font the classes are using, which is typically the 
   system font.
Dpi    
   Controls scale relative to the display resolution. 
   Common resolutions are 96 and 120 DPI.

По умолчанию .NET 2.0 Forms используют AutoScaleMode.Font.

Итак, я разработал образец формы на моей машине разработки Windows XP, Tahoma 8 pt, 96 DPI. Затем я попробовал его на

  • 14 pt Segoe UI 96 DPI машина
  • 14 pt Segoe UI 150 DPI машина

Результаты не были обнадеживающими, как вы можете видеть на этом снимке экрана:

comparison-of-form-autoscalemodes-matrix.png

Свойство AutoScaleMode не предназначено для включения .NET-формы для поддержки различных настроек шрифта или DPI. Итак, что - правильный способ поддержки разных настроек шрифта и DPI?

Ответ 1

Правильный способ - масштабирование элементов управления, самой формы и текста внутри. Это звучит очень сложно, но элементы управления компоновкой (TableLayoutPanel и FlowLayoutPanel) в сочетании с свойством AutoSize делают это значительно менее сложным.