Neobvyklé měřítko pro některé model model Windows Forms aplikace s rozhraním .NET Framework 4.5.2

Příznaky

model model Windows Forms aplikace, které implementují vlastní logiku měřítka pro nastavení vysokého rozlišení DPI, se mohou setkat s neobvyklým měřítkem, pokud jsou přihlášeny do rozhraní Microsoft .NET Framework 4.5.2 s vysokými změnami DPI pomocí následujícího nastavení souboru .config:

<appSettings>

 <add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />

</appSettings>

      

Řešení

Aplikace, které používají faktor měřítka nad rámec škálované hodnoty, se setkají s dodatečným měřítkem, pokud jsou přihlášeny do vylepšení rozhraní .NET Framework 4.5.2 s vysokým rozlišením DPI. Pokud chcete tento problém vyřešit, aktualizujte logiku škálování aplikace tak, aby se na výchozí hodnotu ToolStrip.ImageScalingSize použilo měřítko. Tato změna zabrání zavedení dalšího měřítka. 

Například aplikace, které mají následující kód, budou škálovat tlačítka ToolStrip dvakrát:

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();

}

Následující kód můžete použít ke škálování od konstantní výchozí velikosti nebo od požadované velikosti obrázku:

this.ImageScalingSize = new Size((int)(16 * xFactor), (int)(16 * yFactor));