/// <summary> /// Gets the dpi of the monitor. /// </summary> /// <param name="hWnd">The window handle used to determine the monitor of interest.</param> /// <param name="dpiType">A value of MonitorDpiType indicating the dpi type to be returned.</param> /// <returns>The dpi of the monitor.</returns> public static int GetMonitorDpiFromWindow(IntPtr hWnd, MonitorDpiType dpiType) { IntPtr hmonitor = MonitorFromWindow(hWnd, MonitorOptions.MONITOR_DEFAULTTONEAREST); GetDpiForMonitor(hmonitor, dpiType, out int dpiX, out int dpiY); return(dpiX); }
/// <summary> /// Gets the dpi of the monitor. /// </summary> /// <param name="pt">A point specifying the monitor that should be used.</param> /// <param name="dpiType">A value of MonitorDpiType indicating the dpi type to be returned.</param> /// <returns>The dpi of the monitor.</returns> public static int GetMonitorDpiFromPoint(WinPoint pt, MonitorDpiType dpiType) { IntPtr hmonitor = MonitorFromPoint(pt, MonitorOptions.MONITOR_DEFUALTTONEAREST); GetDpiForMonitor(hmonitor, dpiType, out int dpiX, out int dpiY); return(dpiX); }
public static int GetDpiForMonitor(IntPtr hMonitor, MonitorDpiType dpiType, out Interop.DpiScale dpi) { var result = GetDpiForMonitor(hMonitor, dpiType, out var x, out var y); dpi = new Interop.DpiScale(x, y); return(result); }
/// <summary> /// 現在の <see cref="HwndSource"/> が描画されているモニターの DPI 設定値を取得します。 /// </summary> /// <param name="hwndSource">DPI を取得する対象の Win32 ウィンドウを特定する <see cref="HwndSource"/> オブジェクト。</param> /// <param name="dpiType">DPI の種類。規定値は <see cref="MonitorDpiType.Default"/> (<see cref="MonitorDpiType.EffectiveDpi"/> と同値) です。</param> /// <returns><paramref name="hwndSource"/> が描画されているモニターの DPI 設定値。サポートされていないシステムの場合は <see cref="Dpi.Default"/>。</returns> public static Dpi GetDpi(this HwndSource hwndSource, MonitorDpiType dpiType = MonitorDpiType.Default) { if (!IsSupported) return Dpi.Default; var hmonitor = NativeMethods.MonitorFromWindow( hwndSource.Handle, MonitorDefaultTo.MONITOR_DEFAULTTONEAREST); uint dpiX = 1, dpiY = 1; NativeMethods.GetDpiForMonitor(hmonitor, dpiType, ref dpiX, ref dpiY); return new Dpi(dpiX, dpiY); }
public static Dpi GetMonitorDpi(this HwndSource hwndSource, MonitorDefaultTo defaultTo = MonitorDefaultTo.Nearest, MonitorDpiType dpiType = MonitorDpiType.Default) { var hmonitor = NativeMethods.MonitorFromWindow( hwndSource.Handle, defaultTo); uint dpiX = 1, dpiY = 1; NativeMethods.GetDpiForMonitor(hmonitor, dpiType, ref dpiX, ref dpiY); return new Dpi((ushort)dpiX, (ushort)dpiY); }
/// <summary> /// ディスプレイモニターの DPI 設定値を取得します。 /// </summary> /// <param name="hMonitor">ディスプレイモニタの HMONITOR</param> /// <param name="dpiType">DPI の種類。既定値は <see cref="MonitorDpiType.Default"/> (<see cref="MonitorDpiType.EffectiveDpi"/> と同値) です。</param> /// <returns><paramref name="hWnd"/> のウィンドウが描画されているモニターの DPI 設定値。サポートされていないシステムの場合は <see cref="Dpi.Default"/>。</returns> private static Dpi GetDpiForMonitor(IntPtr hMonitor, MonitorDpiType dpiType) { if (!IsSupported) { return(Dpi.Default); } uint dpiX = 1, dpiY = 1; SHCore.GetDpiForMonitor(hMonitor, dpiType, out dpiX, out dpiY); return(new Dpi(dpiX, dpiY)); }
/// <summary> /// 指定した長方形領域との交差部分が最も広いモニターの DPI 設定値を取得します。 /// </summary> /// <param name="rect">DPI を取得する対象の長方形領域</param> /// <param name="dpiType">DPI の種類。既定値は <see cref="MonitorDpiType.Default"/> (<see cref="MonitorDpiType.EffectiveDpi"/> と同値) です。</param> /// <returns><paramref name="hWnd"/> のウィンドウが描画されているモニターの DPI 設定値。サポートされていないシステムの場合は <see cref="Dpi.Default"/>。</returns> public static Dpi GetDpi(Rectangle rect, MonitorDpiType dpiType = MonitorDpiType.Default) { var r = new RECT() { left = rect.Left, top = rect.Top, right = rect.Right, bottom = rect.Bottom, }; var hMonitor = User32.MonitorFromRect(ref r, MonitorDefaultTo.MONITOR_DEFAULTTONEAREST); return(GetDpiForMonitor(hMonitor, dpiType)); }
public static Dpi GetDpi(this HwndSource hwndSource, MonitorDpiType dpiType = MonitorDpiType.Default) { if (!IsSupported) { return(Dpi.Default); } var hMonitor = DpiMethods.MonitorFromWindow(hwndSource.Handle, DpiMethods.MonitorDefaultTo.Nearest); uint dpiX = 1, dpiY = 1; DpiMethods.GetDpiForMonitor(hMonitor, dpiType, ref dpiX, ref dpiY); return(new Dpi(dpiX, dpiY)); }
/// <summary> /// 現在の <see cref="HwndSource"/> が描画されているモニターの DPI 設定値を取得します。 /// </summary> /// <param name="hwndSource">DPI を取得する対象の Win32 ウィンドウを特定する <see cref="HwndSource"/> オブジェクト。</param> /// <param name="dpiType">DPI の種類。規定値は <see cref="MonitorDpiType.Default"/> (<see cref="MonitorDpiType.EffectiveDpi"/> と同値) です。</param> /// <returns><paramref name="hwndSource"/> が描画されているモニターの DPI 設定値。サポートされていないシステムの場合は <see cref="Dpi.Default"/>。</returns> public static Dpi GetDpi(this HwndSource hwndSource, MonitorDpiType dpiType = MonitorDpiType.Default) { if (!IsSupported) { return(Dpi.Default); } var hmonitor = NativeMethods.MonitorFromWindow( hwndSource.Handle, MonitorDefaultTo.MONITOR_DEFAULTTONEAREST); uint dpiX = 1, dpiY = 1; NativeMethods.GetDpiForMonitor(hmonitor, dpiType, ref dpiX, ref dpiY); return(new Dpi(dpiX, dpiY)); }
/// <summary> /// 指定したハンドルのウィンドウが描画されているモニターの DPI 設定値を取得します。 /// </summary> /// <param name="hWnd">DPI を取得する対象の Win32 ウィンドウを示すウィンドウ ハンドル。</param> /// <param name="dpiType">DPI の種類。既定値は <see cref="MonitorDpiType.Default"/> (<see cref="MonitorDpiType.EffectiveDpi"/> と同値) です。</param> /// <returns><paramref name="hWnd"/> のウィンドウが描画されているモニターの DPI 設定値。サポートされていないシステムの場合は <see cref="Dpi.Default"/>。</returns> public static Dpi GetDpi(IntPtr hWnd, MonitorDpiType dpiType = MonitorDpiType.Default) { if (!IsSupported) { return(Dpi.Default); } var hmonitor = User32.MonitorFromWindow( hWnd, MonitorDefaultTo.MONITOR_DEFAULTTONEAREST); uint dpiX = 1, dpiY = 1; SHCore.GetDpiForMonitor(hmonitor, dpiType, ref dpiX, ref dpiY); return(new Dpi(dpiX, dpiY)); }
public static int GetDpiForMonitor(IntPtr monitor, MonitorDpiType type = MonitorDpiType.Effective) { var h = LoadLibrary("shcore.dll"); var ptr = GetProcAddress(h, "GetDpiForMonitor"); // Windows 8.1 if (ptr == IntPtr.Zero) { return(GetDpiForDesktop()); } int hr = Marshal.GetDelegateForFunctionPointer <GetDpiForMonitorFn>(ptr)(monitor, type, out int x, out int y); if (hr < 0) { return(GetDpiForDesktop()); } return(x); }
public static extern int GetDpiForMonitor(IntPtr hMonitor, MonitorDpiType dpiType, out int dpiX, out int dpiY);
/// <summary> /// 現在の <see cref="HwndSource"/> が描画されているモニターの DPI 設定値を取得します。 /// </summary> /// <param name="hwndSource">DPI を取得する対象の Win32 ウィンドウを特定する <see cref="HwndSource"/> オブジェクト。</param> /// <param name="dpiType">DPI の種類。既定値は <see cref="MonitorDpiType.Default"/> (<see cref="MonitorDpiType.EffectiveDpi"/> と同値) です。</param> /// <returns><paramref name="hwndSource"/> が描画されているモニターの DPI 設定値。サポートされていないシステムの場合は <see cref="Dpi.Default"/>。</returns> public static Dpi GetDpi(this HwndSource hwndSource, MonitorDpiType dpiType = MonitorDpiType.Default) { return(GetDpi(hwndSource.Handle, dpiType)); }
extern internal static void GetDpiForMonitor(IntPtr hMonitor, MonitorDpiType dpiType, ref uint dpiX, ref uint dpiY);
public static extern void GetDpiForMonitor(IntPtr hmonitor, MonitorDpiType dpiType, ref uint dpiX, ref uint dpiY);
GetDpiForMonitor(IntPtr hMonitor, MonitorDpiType dpiType, out int dpiX, out int dpiY);
public static extern IntPtr GetDpiForMonitor([In] IntPtr hmonitor, [In] MonitorDpiType dpiType, [Out] out uint dpiX, [Out] out uint dpiY);
/// <summary> /// 指定したハンドルのウィンドウが描画されているモニターの DPI 設定値を取得します。 /// </summary> /// <param name="hWnd">DPI を取得する対象の Win32 ウィンドウを示すウィンドウ ハンドル。</param> /// <param name="dpiType">DPI の種類。既定値は <see cref="MonitorDpiType.Default"/> (<see cref="MonitorDpiType.EffectiveDpi"/> と同値) です。</param> /// <returns><paramref name="hWnd"/> のウィンドウが描画されているモニターの DPI 設定値。サポートされていないシステムの場合は <see cref="Dpi.Default"/>。</returns> public static Dpi GetDpi(IntPtr hWnd, MonitorDpiType dpiType = MonitorDpiType.Default) { var hMonitor = User32.MonitorFromWindow(hWnd, MonitorDefaultTo.MONITOR_DEFAULTTONEAREST); return(GetDpiForMonitor(hMonitor, dpiType)); }
internal static extern uint GetDpiForMonitor(IntPtr hmonitor, MonitorDpiType dpiType, out uint dpiX, out uint dpiY);
public static extern int GetDpiForMonitor(IntPtr monitor, MonitorDpiType dpiType, out uint dpix, out uint dpiy);
private static extern IntPtr GetDpiForMonitor(IntPtr hmonitor, MonitorDpiType dpiType, out int dpiX, out int dpiY);
private static extern bool GetDpiForMonitor(IntPtr hMonitor, MonitorDpiType dpiType, out uint dpiX, out uint dpiY);
public static extern bool GetDpiForMonitor(IntPtr hMonitor, MonitorDpiType dpiType, ref uint dpiX, ref uint dpiY);
public static extern HResult GetDpiForMonitor(IntPtr hmonitor, MonitorDpiType dpiType, out uint dpiX, out uint dpiY);