應用程序更新後,
> 意外意識會發生變化
> 最初設計為DPi-Unaware(依賴Windows的UI縮放)的某些應用程序,可能會意外地成為DPI-Weaw(系統意識)之後的次要更新。 即使應用程序表現出來和外部依賴性保持不變,也會發生這種情況。> 根本原因:
>
這種行為通常是由DPI意識到的第三方組件或依賴項引起的。 即使在應用清單中有明確的DPI-Unaware聲明,此類組件的包含也可以覆蓋設置,迫使DPI-ISESTEMESS。
用於定義DPI意識的解決方案:
幾種方法可以明確控制應用程序的DPI意識:
1。修改應用程序清單:
app.manifest
<code class="language-xml"><dpiaware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">false</dpiaware></code>
適當的API調用取決於Windows版本:
Windows 7:
<code class="language-csharp">[DllImport("user32.dll", SetLastError = true)] static extern bool SetProcessDPIAware();</code>
<code class="language-csharp">[DllImport("shcore.dll")] static extern int SetProcessDpiAwareness(ProcessDPIAwareness value); enum ProcessDPIAwareness { DPI_Unaware = 0, System_DPI_Aware = 1, Per_Monitor_DPI_Aware = 2 }</code>
<code class="language-csharp">[DllImport("user32.dll", SetLastError = true)] static extern int SetProcessDpiAwarenessContext(DpiAwarenessContext value); enum DpiAwarenessContext { Context_Unaware = (DPI_AWARENESS_CONTEXT)-1, Context_SystemAware = (DPI_AWARENESS_CONTEXT)-2, Context_PerMonitorAware = (DPI_AWARENESS_CONTEXT)-3, Context_PerMonitorAwareV2 = (DPI_AWARENESS_CONTEXT)-4 }</code>
AssemblyInfo.cs
重要的考慮因素:
>
確保所有第三方組件和依賴項與所需的DPI意識水平一致。<code class="language-csharp">[assembly: System.Windows.Media.DisableDpiAwareness]</code>
以上是為什麼我的DPI-Unaware應用程序在更新後突然變得DPI意見?的詳細內容。更多資訊請關注PHP中文網其他相關文章!