Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 4
0
        /// <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);
		}
Esempio n. 6
0
        /// <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));
        }
Esempio n. 7
0
        /// <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));
        }
Esempio n. 8
0
        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));
        }
Esempio n. 9
0
        /// <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));
        }
Esempio n. 10
0
        /// <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));
        }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
 public static extern int GetDpiForMonitor(IntPtr hMonitor, MonitorDpiType dpiType, out int dpiX, out int dpiY);
Esempio n. 13
0
 /// <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));
 }
Esempio n. 14
0
 extern internal static void GetDpiForMonitor(IntPtr hMonitor, MonitorDpiType dpiType, ref uint dpiX, ref uint dpiY);
Esempio n. 15
0
 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);
Esempio n. 17
0
 public static extern IntPtr GetDpiForMonitor([In] IntPtr hmonitor, [In] MonitorDpiType dpiType, [Out] out uint dpiX, [Out] out uint dpiY);
Esempio n. 18
0
        /// <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);
Esempio n. 20
0
 public static extern void GetDpiForMonitor(IntPtr hmonitor, MonitorDpiType dpiType, ref uint dpiX, ref uint dpiY);
Esempio n. 21
0
 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);
Esempio n. 23
0
 private static extern IntPtr GetDpiForMonitor(IntPtr hmonitor, MonitorDpiType dpiType, out int dpiX, out int dpiY);
Esempio n. 24
0
 private static extern bool GetDpiForMonitor(IntPtr hMonitor, MonitorDpiType dpiType, out uint dpiX, out uint dpiY);
Esempio n. 25
0
 public static extern bool GetDpiForMonitor(IntPtr hMonitor, MonitorDpiType dpiType, ref uint dpiX, ref uint dpiY);
Esempio n. 26
0
 public static extern HResult GetDpiForMonitor(IntPtr hmonitor, MonitorDpiType dpiType, out uint dpiX,
                                               out uint dpiY);