Симптоми
Windows Forms приложения, които изпълняват свои собствени логика за високи стойности на DPI мащабиране на възникнали необичайни мащабиране ако тези приложения са включили промени в Microsoft .NET Framework 4.5.2 висока разделителна способност с помощта на следната настройка на .config файла:
<appSettings>
<add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
</appSettings>
Решение
Приложения, които се отнасят коефициент на мащабиране върху стойността мащабирани ще възникнат допълнителни мащабиране, когато те са включили подобрения в .NET Framework 4.5.2 висока разделителна способност. За да разрешите този проблем, актуализирайте мащабиране логика на приложението да приложите мащабиране на ToolStrip.ImageScalingSize стойност по подразбиране. Тази промяна ще се избегне въвеждането на допълнителната мащабиране.
Например приложения, които имат следния код ще мащаб бутони на лентата с инструменти два пъти:
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();
}
Можете да използвате следния код за преоразмеряване постоянна стойността по подразбиране или от размера на желаната изображението:
this.ImageScalingSize = new Size((int)(16 * xFactor), (int)(16 * yFactor));