Problembeschreibung
Windows Forms-Anwendung, die eigene Logik für hohem DPI-Skalierung implementieren möglicherweise ungewöhnlich Skalierung Anwendung in Microsoft.NET Framework 4.5.2 High DPI ändert entschieden werden mit .config-Datei festlegen:
<appSettings>
<add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
</appSettings>
Problemlösung
Anträge, die einen Skalierungsfaktor auf skalierten Werten gelten treten zusätzliche skalieren, wenn sie.NET Framework 4.5.2 High DPI Verbesserungen entschieden. Um dieses Problem zu beheben, aktualisieren Sie Skalierung Anwendungslogik zum Anwenden auf den Standardwert ToolStrip.ImageScalingSize . Diese Änderung verhindert die Einführung von zusätzlichen skalieren.
Programme, die den folgenden Code werden z. B. zweimal ToolStrip Schaltflächen skalieren:
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();
}
Den folgenden Code können von Konstanten Standardgröße, oder von der gewünschten Abbildgröße:
this.ImageScalingSize = new Size((int)(16 * xFactor), (int)(16 * yFactor));