views:

2226

answers:

1

So I'm trying to figure out how the Form's AutoScaleMode property can possibly help to support a system with a font or DPI that is different from my work development machine.

From the SDK:

AutoScaleMode Enumeration

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.

By default .NET 2.0 Forms use AutoScaleMode.Font.

So I designed a sample form on my Windows XP, Tahoma 8 pt, 96 DPI development machine. Then I tried it out on a

  • 14 pt Segoe UI 96 DPI machine
  • 14 pt Segoe UI 150 DPI machine

The results were not encouraging, as you can see in this screenshot:

The AutoScaleMode property was not designed to enable a .NET Form for support of different font or DPI settings. So what is the proper way to support different font and DPI settings?

+3  A: 

The correct way is to scale the controls, the form itself and the text within. This sounds very complicated, but the layout controls (TableLayoutPanel and FlowLayoutPanel), combined with the AutoSize property, make this considerably less difficult.

John Rudy
Layout panels wouldn't be of any use in the above form, things already are layed out using anchors.
Ian Boyd
Replace the anchors. The anchors are the issue.
John Rudy
Replace them with what? The button is 50dlus wide, and is 7dlus from the right and bottom edge.
Ian Boyd
Replace the entire layout with a TableLayout or FlowLayout, and re-layout the form on said Layout control, using it to handle all your scaling dirty work. Anchors are great for keeping a control in a given position, they do not inherently provide you nice scaling.
John Rudy
-1, broken link...
romkyns
@romkyns: Thanks for the note; I thought I cleaned those all up. Removing the link.
John Rudy