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; }
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; * } * /**/ }
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)); }
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)); }
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); }
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); }
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)); }