Triệu chứng
Ứng dụng Windows Forms thực hiện mình rộng logic thiết đặt DPI cao có thể gặp bất thường rộng nếu các ứng dụng được chọn tham gia vào những thay đổi của Microsoft .NET Framework 4.5.2 DPI cao bằng cách sử dụng thiết đặt tệp .config sau:
<appSettings>
<add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
</appSettings>
Giải pháp
Ứng dụng áp dụng một số tỉ lệ trên giá trị thu nhỏ sẽ gặp phải phụ rộng khi chúng được chọn tham gia vào những cải tiến về .NET Framework 4.5.2 DPI cao. Để khắc phục sự cố này, Cập nhật các ứng dụng rộng logic để áp dụng rộng ToolStrip.ImageScalingSize giá trị mặc định. Thay đổi này sẽ tránh việc giới thiệu thêm rộng.
Ví dụ, ứng dụng có mã sau sẽ có quy mô công cụ nút hai lần:
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();
}
Bạn có thể sử dụng mã sau căn chỉnh kích thước liên tục mặc định hoặc kích thước mong muốn hình ảnh của bạn:
this.ImageScalingSize = new Size((int)(16 * xFactor), (int)(16 * yFactor));