コード例 #1
0
        private static SizeF CalculateScalingFactor()
        {
            const int LOGPIXELSX = 88;
            const int LOGPIXELSY = 90;

            IntPtr primaryMonitorDC = DllImports.GetDC(IntPtr.Zero);

            try
            {
                int deviceDpiX = DllImports.GetDeviceCaps(primaryMonitorDC, LOGPIXELSX);
                int deviceDpiY = DllImports.GetDeviceCaps(primaryMonitorDC, LOGPIXELSY);

                double scalingFactorX = deviceDpiX / LogicalDpi;
                double scalingFactorY = deviceDpiY / LogicalDpi;

                return(new SizeF((float)scalingFactorX, (float)scalingFactorY));
            }
            finally
            {
                DllImports.ReleaseDC(IntPtr.Zero, primaryMonitorDC);
            }
        }