Моя проблема в том, что я не знаю, как получить правильное значение DPI, когда процентное содержание основного монитора составляет 150%, а второго монитора - 100%, и когда я запускаю свой проект и переключаю окно с 1 на 2. При переключениисостояние окна Я получаю DPI, но я пытаюсь, но de DPI стандартно 144, не меняется.
Это мой код:
public static void GetDpi(this System.Windows.Forms.Screen screen, DpiType dpiType, out uint dpiX, out uint dpiY)
{
var pnt = new System.Drawing.Point(screen.Bounds.Left + 1, screen.Bounds.Top + 1);
var mona = MonitorFromPoint(pnt, 2/*MONITOR_DEFAULTTONEAREST*/);
GetDpiForMonitor(mona, dpiType, out dpiX, out dpiY);
}
[DllImport("User32.dll")]
private static extern IntPtr MonitorFromPoint([In]System.Drawing.Point pt, [In]uint dwFlags);
[DllImport("Shcore.dll")]
private static extern IntPtr GetDpiForMonitor([In]IntPtr hmonitor, [In]DpiType dpiType, [Out]out uint dpiX, [Out]out uint dpiY);
Вызов метода:
uint x = 0, y = 0;
foreach (var screen in System.Windows.Forms.Screen.AllScreens)
{
if (screen.DeviceName == currentMonitor.Name)
{
screen.GetDpi(currentMonitor.MonitorHandle,DpiType.Angular, out x, out y);
break;
}
}