[英]WPF Application Blurry on High DPI Screen on Windows 10
WPF應用程序是否可以在開箱即用的DPI高屏幕上正常縮放(無需進一步定制清單等?)。 據我了解他們這樣做了嗎?
在筆記本電腦屏幕上查看時,我編寫的兩個WPF應用程序在新筆記本電腦(運行Windows 10)上均顯得模糊。 通常,筆記本電腦的主要顯示器設置為外部低dpi顯示器,並且內置筆記本電腦面板的縮放比例為125%。 但是,無論是否插入了低dpi監視器,都會出現模糊。
我認為這可能與我的兩個應用程序的啟動方式有關(通過主方法,而不是啟動主窗口的默認代碼模板),但是我剛剛啟動了Visual Studio 2015並生成了一個全新的WPF帶有項目模板的應用程序(只是空白表單上的幾個單選按鈕),它在我的系統上也無法擴展為高DPI。
值得一提的是,我已經在Windows副本上配置了“首選外部清單”注冊表設置,以允許每個應用程序禁用清單的高dpi縮放。 (即HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\SideBySide "PreferExternalManifest"=dword:00000001
)。
從.net 4.6.2開始,默認情況下,每個Monitor DPI都知道WPF應用程序,而不是早期版本:
現在已啟用WPF應用程序,以使每個監視器都能了解DPI。 對於將不同DPI級別的多個顯示器連接到一台計算機的方案,此改進至關重要。 由於WPF應用程序的全部或部分在監視器之間轉換,因此WPF的預期行為是將應用程序的DPI自動匹配到屏幕。 現在可以了。 在以前的版本中,您將不得不編寫其他本機代碼以在WPF應用程序中啟用每個監視器的DPI感知。
因此,請安裝.4.6.2開發工具,並將您的應用程序定位到4.6.2,以獲得對此的支持。
任何依賴於PresentationCore的程序都會自動識別DPI。 它需要一個屬性來顯式禁用該屬性 。
您肯定有其他問題,WPF應用程序不會自動支持每個顯示器的dpi意識。 從Windows 8.1開始可用的功能。 在外部顯示器上使用主顯示器非常有可能,您可能給了它不同的DPI設置,現在筆記本電腦屏幕上的窗口被迫使用相同的DPI設置,除非它們明確選擇加入。 承擔相當多的艱苦工作 。 或考慮簡單地將筆記本電腦的屏幕作為主要顯示屏,使用“顯示”小程序可以輕松地來回切換。
假設您正在運行足夠高的版本(根據另一個答案為4.6.2),則將執行以下操作。 我在Window.Current.Activate()之后不久運行它:
double GetDpi()
{
var qualifiers = Windows.ApplicationModel.Resources.Core.ResourceContext.GetForCurrentView().QualifierValues;
double scale = 96;
if (qualifiers.ContainsKey("Scale"))
{
string strScale = qualifiers["Scale"];
double.TryParse(strScale, out scale);
}
return scale;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.