2015-02-12 3 views
0

У меня есть приложение WPF, на котором размещаются элементы управления winforms. Когда я запускаю приложение в Windows 8.1. Ui загроможден. Во время работы я меняю настройки DPi и разрешения. Как бы то ни было, это сделать dpiaware приложения ложным. Из моего исследования я знаю, что могу использовать манифест или использовать api setdpiawareness из shcore.dll (win8.1). Явление более подходит для меня. Я проверил Disable DPI awareness for WPF application.Dpiaware = false в приложении WPF

Мой запрос больше касается манифеста, Я пишу пример приложения, чтобы сделать dpiaware ложным. Я уже вставляю манифест, ниже это то, как он выглядит.

<asmv3:application> 
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings"> 
    <dpiAware>false</dpiAware> 
    </asmv3:windowsSettings> 
</asmv3:application> 

Я пытаюсь запустить ниже, и каждый раз, когда значение Dpiaware верно. Любая вещь, которую я делаю неправильно в манифесте? или какие-либо альтернативы?

[DllImport("user32.dll", SetLastError = true)] 
static extern bool IsProcessDPIAware(); 
protected override void OnStartup(StartupEventArgs e) 
{ 
    Process_DPI_Awareness p; 
    p = 0; 
    base.OnStartup(e); 

    bool h = IsProcessDPIAware(); 
    if(h) 
     MessageBox.Show("Dpi is 1"); 
    else 
     MessageBox.Show("Dpi is not true"); 
} 
+1

Используйте атрибут [[DisableDpiAwareness] (https://msdn.microsoft.com/en-us/library/system.windows.media.disabledpiawarenessattribute%28v=vs.110%29.aspx)]. –

+0

У меня были начальные икоты, проходящие через дизайн. Но, по существу, после правильного дизайна этот атрибут работал великолепно! –

ответ

0

Like Passant упомянутый DisableDpiAwareness работает очень!

Смежные вопросы