การปรับขนาดที่ผิดปกติสําหรับแอปพลิเคชัน Windows Forms บางรายการที่ใช้ .NET Framework 4.5.2

อาการ

แอปพลิเคชัน Windows Forms ที่ใช้ตรรกะมาตราส่วนของตนเองสําหรับการตั้งค่า DPI สูงอาจพบการปรับขนาดที่ผิดปกติหากแอปพลิเคชันเหล่านี้เลือกเปลี่ยนแปลง Microsoft .NET Framework 4.5.2 DPI สูง DPI โดยใช้การตั้งค่าไฟล์ .config ต่อไปนี้:

<appSettings>

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

</appSettings>

      

การแก้ปัญหา

แอปพลิเคชันที่ใช้ปัจจัยมาตราส่วนที่ด้านบนของค่าที่ปรับมาตราส่วนจะพบการปรับขนาดเพิ่มเติมเมื่อมีการเลือกรับการปรับปรุง .NET Framework 4.5.2 DPI สูง เมื่อต้องการแก้ไขปัญหานี้ ให้อัปเดตตรรกะการปรับขนาดของแอปพลิเคชันเพื่อนํามาตราส่วนไปใช้กับค่าเริ่มต้น 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));