Síntomas
Windows Forms aplicaciones que implementan su propia lógica de escalado para configuraciones de valores altos de PPP pueden experimentar un escalado inusual si estas aplicaciones se incluyen en los cambios de Microsoft .NET Framework 4.5.2 High DPI mediante la siguiente configuración de archivo .config:
<appSettings>
<add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
</appSettings>
Resolución
Las aplicaciones que aplican un factor de escalado sobre el valor escalado encontrarán un escalado adicional cuando participen en las mejoras de .NET Framework 4.5.2 High PPP. Para resolver este problema, actualice la lógica de escalado de la aplicación para aplicar el escalado en el valor predeterminado de ToolStrip.ImageScalingSize . Este cambio evitará la introducción de escalado adicional.
Por ejemplo, las aplicaciones que tengan el código siguiente escalarán los botones de ToolStrip dos veces:
public MyToolStrip()
{
IntPtr hDC = GetDC(new HandleRef(null, IntPtr.Zero));
double xFactor = GetDeviceCaps(new HandleRef(null, hDC), LOGPIXELSX) / 96.0;
double yFactor = GetDeviceCaps(new HandleRef(null, hDC), LOGPIXELSY) / 96.0;
this.ImageScalingSize = new Size((int)(this.ImageScalingSize.Width * xFactor), (int)(this.ImageScalingSize.Height * yFactor));
InitializeComponent();
}
Puede usar el código siguiente para escalar desde el tamaño predeterminado de la constante o desde el tamaño de imagen deseado:
this.ImageScalingSize = new Size((int)(16 * xFactor), (int)(16 * yFactor));