Sintomi
Applicazioni Windows Form che implementano la propria logica per valori DPI alti di ridimensionamento che si verifichi insolita scala se queste applicazioni vengono associate le modifiche introdotte in Microsoft.NET Framework 4.5.2 High DPI utilizzando la seguente impostazione di file. config:
<appSettings>
<add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
</appSettings>
Risoluzione
Applicazioni che si applicano a un fattore di scala sopra il valore in scala rileverà l'eccesso di scala quando ha scelto nei miglioramenti di.NET Framework 4.5.2 valori DPI elevati. Per risolvere questo problema, aggiornare la logica di ridimensionamento dell'applicazione per applicare il ridimensionamento sul valore predefinito ImageScalingSize . Questa modifica consente di evitare l'introduzione di ulteriore adattamento.
Ad esempio, le applicazioni dotate di codice riportato di seguito verranno adattata pulsanti ToolStrip due volte:
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();
}
Le proporzioni rispetto alla dimensione di default costante, o dalla dimensione dell'immagine desiderata, è possibile utilizzare il codice riportato di seguito:
this.ImageScalingSize = new Size((int)(16 * xFactor), (int)(16 * yFactor));