Microsoft Communities

Welcome to WindowsClient.net | Sign in | Join

Here are some frequently asked questions about Windows Forms and their answers.

Windows Forms FAQs

How does AutoScale affect control positioning?

AutoScale refers in general to recalculating sizes and positions for controls without reliance on an outer layout container or engine doing the calculation. This is done for environment changes like font, DPI etc.

For 1.1 the default code spit was :

this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);

AutoScaleBase size attempts to store the size of the font rendered at the DPI of the machine. As is clearly apparent the Size type only stores integer values, from here the problem of conversion accuracy stems. After repeated changes, rounding errors can introduce noticable and at times, unacceptable loss of accuracy.

For 2.0, the default code spit is now

this.AutoScaleDimensions = new System.Drawing.SizeF(6.0F, 13.0F);

We now store the dimensions of the font in a SizeF which leads to much greater accuracy. In addition we offer three AutoScaleModes.

Interestingly, both of these autoscale approaches coexist. The two members controlling these two systems are below

  • AutoScale – bool that enables/disables the Everett auto scaling system.
  • AutoScaleMode – enum including entry of None to map to AutoScale true. All other settings enable Whidbey auto scaling system.

AutoScale  
AutoScaleMode
  None Font DPI
True Everett scaling n/a n/a
False n/a DEFAULT
Whidbey scaling enabled, font AND dpi changes are handled.
Whidbey scaling enabled, only dpi changes are handled

n/a means that that property combination is not achievable. Property sets on one side set the property on the other. For AutoScale set to False, AutoScaleMode will be set to Font.



Page view counter