Вот мой код: < /p>
Код: Выделить всё
public partial class MainWindow : Window
{
private HwndSource hwndSource;
public MainWindow()
{
InitializeComponent();
}
protected override void OnSourceInitialized(EventArgs e)
{
hwndSource = PresentationSource.FromVisual((Visual) sender) as HwndSource;
hwndSource.AddHook(new HwndSourceHook(WndProc));
}
private const int WM_DPICHANGED = 0x02E0;
private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
if (msg == WM_DPICHANGED)
{
handled = true;
}
return IntPtr.Zero;
}
}
< /code>
Посмотрите на этот код. Вот как я отключаю масштабирование системы. Но коэффициент вниз, начальный DPI не обнаружен при перезапуске своего приложения с различным разрешением экрана (DPI). Он не получает wm_dpichanged
< /li>
< /ol>
На основе решений на основе C#, доступных в стеке, но ни одна из них не работает, и вполне старая, не работает, не работает в условиях. Пожалуйста, попробуйте добавить/изменить мой заданный код на основе Win32. Другое решение для кода Pure C# также приветствуется, если каждый шаг описан должным образом.
Подробнее здесь: https://stackoverflow.com/questions/786 ... ged-in-wpf