تغيير حجم غير عادي لبعض تطبيقات Windows Forms مع .NET Framework 4.5.2

الأعراض

قد تواجه تطبيقات Windows Forms التي تطبق منطق تغيير الحجم الخاص بها لإعدادات DPI (نقطة لكل بوصة) العالية تحجيما غير عادي إذا اشتركت هذه التطبيقات في تغييرات DPI المرتفع في Microsoft .NET Framework 4.5.2 باستخدام إعداد ملف .config التالي:

<appSettings>

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

</appSettings>

      

الدقة

ستواجه التطبيقات التي تطبق عامل تغيير الحجم أعلى القيمة المقيسة تحجيما إضافيا عند اختيارها في تحسينات DPI العالي ل .NET Framework 4.5.2. لحل هذه المشكلة، قم بتحديث منطق تغيير الحجم الخاص بالتطبيق لتطبيق تغيير الحجم على القيمة الافتراضية 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));