OSDN Git Service

GDIの関数でDPIを取得するのはコストが高いので、別の方法にすることにした
authorgdkhd812 <test@nnn.co.jp>
Sat, 19 Dec 2015 12:21:17 +0000 (17:51 +0530)
committergdkhd812 <test@nnn.co.jp>
Sat, 19 Dec 2015 12:21:17 +0000 (17:51 +0530)
WPF/FooEditEngine/Direct2D/D2DRender.cs

index f8c57f0..65076b7 100644 (file)
@@ -409,10 +409,11 @@ namespace FooEditEngine.WPF
 
         public override void GetDpi(out float dpix, out float dpiy)
         {
-            IntPtr hDc = NativeMethods.GetDC(IntPtr.Zero);
-            dpix = NativeMethods.GetDeviceCaps(hDc, NativeMethods.LOGPIXELSX);
-            dpiy = NativeMethods.GetDeviceCaps(hDc, NativeMethods.LOGPIXELSY);
-            NativeMethods.ReleaseDC(IntPtr.Zero, hDc);
+            var dpiXProperty = typeof(SystemParameters).GetProperty("DpiX", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
+            var dpiYProperty = typeof(SystemParameters).GetProperty("Dpi", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
+
+            dpix = (int)dpiXProperty.GetValue(null, null);
+            dpiy = (int)dpiYProperty.GetValue(null, null);
         }
 
         protected override void DestructRender()