Как я могу отслеживать последний DPI, который отправляется WM_DPichanged в WPF?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу отслеживать последний DPI, который отправляется WM_DPichanged в WPF?

Сообщение Anonymous »

Я хочу масштабировать свое приложение WPF в соответствии с доступным DPI экрана. Я знаю, что там на мониторе DPI, но это совершенно отличается от того, чего я хочу достичь. Я хочу отключить масштабирование для моего приложения WPF, даже если Windows имеет некоторую масштаб на монитор или масштаб по всей системе. Я понимаю, что если масштабирование системы отключено, то то, что Windows, Windows решает использовать, является моей основной целью. И текущий DPI для окна всегда равна последнему DPI, отправленному WM_DPichanged. < /P>
Вот мой код: < /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 
при запуске и не влияет на начальный рендеринг. Если я как -то отслеживаю это, то я могу легко масштабировать свое приложение в соответствии с этим. Итак, нет первоначальной проблемы с DPI. Итак, здесь я делаю сводку вопроса и того, что я хочу в качестве ответа. Wm_dpichanged < /code>, я хочу применить это в моем масштабировании интерфейса WPF, что начальный DPI обнаруживается и сама по себе шкала приложений не по системе /OS. < /P>
< /li>
< /ol>
На основе решений на основе C#, доступных в стеке, но ни одна из них не работает, и вполне старая, не работает, не работает в условиях. Пожалуйста, попробуйте добавить/изменить мой заданный код на основе Win32. Другое решение для кода Pure C# также приветствуется, если каждый шаг описан должным образом.

Подробнее здесь: https://stackoverflow.com/questions/786 ... ged-in-wpf
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как я могу отслеживать последний DPI, отправленный WM_DPICHANGED в WPF?
    Anonymous » » в форуме C#
    0 Ответы
    34 Просмотры
    Последнее сообщение Anonymous
  • Как преобразовать координату в собственном DPI в координату в логике DPI WPF?
    Anonymous » » в форуме C#
    0 Ответы
    65 Просмотры
    Последнее сообщение Anonymous
  • Как появилась поддержка OxyPlot DPI в wpf?
    Anonymous » » в форуме C#
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Как появилась поддержка OxyPlot DPI в wpf?
    Anonymous » » в форуме C#
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Как появилась поддержка OxyPlot DPI в wpf?
    Anonymous » » в форуме C#
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»