Ejemplo n.º 1
0
        public static void GetScaleFactors(this System.Windows.Forms.Screen screen, out double scaleFactorX, out double scaleFactorY)
        {
            screen.GetDpi(DpiType.Effective, out uint dpix_eff, out uint dpiy_eff);

            scaleFactorX = ((double)dpix_eff) / 96.0;
            scaleFactorY = ((double)dpiy_eff) / 96.0;
        }
Ejemplo n.º 2
0
        public static void GetScaleFactors(this System.Windows.Forms.Screen screen, out double scaleFactorX, out double scaleFactorY)
        {
            screen.GetDpi(DpiType.Effective, out uint dpix_eff, out uint dpiy_eff);
            //screen.GetDpi(DpiType.Raw, out uint dpix_raw, out uint dpiy_raw);
            //screen.GetDpi(DpiType.Angular, out uint dpix_ang, out uint dpiy_ang);

            //Debug.WriteLine($"Raw: {dpix_raw}, {dpiy_raw}");
            Debug.WriteLine($"Effectve: {dpix_eff}, {dpiy_eff}");

            scaleFactorX = ((double)dpix_eff) / 96.0;
            scaleFactorY = ((double)dpiy_eff) / 96.0;

            /**
             * if (scaleFactorX < 1)
             *  scaleFactorX = 1.0 / scaleFactorX;
             *
             * if (scaleFactorY < 1)
             *  scaleFactorY = 1.0 / scaleFactorY;
             *
             * // When raw dpi is not available (observed in a virtualbox vm), assume 1.
             * //TODO: Find an alternate way when this happens.
             * if ((dpix_raw == 0) || (dpiy_raw == 0))
             * {
             *  scaleFactorX = 1.0;
             *  scaleFactorY = 1.0;
             * }
             * /**/
        }
Ejemplo n.º 3
0
        public static double ToDips(System.Windows.Forms.Screen screen, double value, DpiDirection dpiDirection = DpiDirection.X)
        {
            uint xDpi, yDpi;

            screen.GetDpi(DpiType.Effective, out xDpi, out yDpi);
            return(value / (dpiDirection == DpiDirection.X ? xDpi : yDpi / 96.0));
        }
Ejemplo n.º 4
0
        public static Size GetDPI(this System.Windows.Forms.Screen screen, DpiType dpiType = DpiType.Raw)
        {
            uint dpiX, dpiY;

            screen.GetDpi(dpiType, out dpiX, out dpiY);
            return(new Size((int)dpiX, (int)dpiY));
        }
Ejemplo n.º 5
0
        public static Size GetSize(System.Windows.Forms.Screen screen)
        {
            //uint xDpi, yDpi;
            ScreenExtensions.Dpi dpi = screen.GetDpi(DpiType.Effective);
            var size = new Size();

            size.Width  = screen.Bounds.Width / (dpi.x / 96.0);
            size.Height = screen.Bounds.Height / (dpi.y / 96.0);
            size.XDPI   = dpi.x;
            size.YDPI   = dpi.y;
            return(size);
        }
Ejemplo n.º 6
0
        public static Size GetSize(System.Windows.Forms.Screen screen)
        {
            uint xDpi, yDpi;

            screen.GetDpi(DpiType.Effective, out xDpi, out yDpi);
            var size = new Size();

            size.Width  = screen.Bounds.Width / (xDpi / 96.0);
            size.Height = screen.Bounds.Height / (yDpi / 96.0);
            size.XDPI   = xDpi;
            size.YDPI   = yDpi;
            return(size);
        }
Ejemplo n.º 7
0
        public static double ToDips(System.Windows.Forms.Screen screen, double value, DpiDirection dpiDirection = DpiDirection.X)
        {
            ScreenExtensions.Dpi dpi = screen.GetDpi(DpiType.Effective);

            return(value / (dpiDirection == DpiDirection.X ? dpi.x : dpi.y / 96.0));
        }