Gejala
Aplikasi Windows Forms yang menerapkan mereka sendiri penskalaan logika untuk pengaturan DPI tinggi mungkin mengalami biasa penskalaan jika aplikasi ini disertakan ke Microsoft .NET Framework 4.5.2 DPI tinggi perubahan menggunakan pengaturan file .config berikut ini:
<appSettings>
<add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
</appSettings>
Pemecahan masalah
Aplikasi yang menerapkan faktor penskalaan ke nilai skala akan mengalami tambahan penskalaan ketika mereka memilih ke .NET Framework 4.5.2 DPI tinggi peningkatan. Untuk mengatasi masalah ini, pembaruan logika penskalaan aplikasi untuk menerapkan penskalaan pada nilai asali ToolStrip.ImageScalingSize . Perubahan ini akan menghindari Pendahuluan tambahan penskalaan.
Sebagai contoh, aplikasi yang memiliki kode berikut akan skala ToolStrip tombol dua kali:
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();
}
Anda dapat menggunakan kode berikut untuk mengubah skala dari ukuran asali terus-menerus, atau dari ukuran gambar diinginkan Anda:
this.ImageScalingSize = new Size((int)(16 * xFactor), (int)(16 * yFactor));