WPF 4文字模糊不清晰解決方法


問題剛剛出現時當時還在wpf3.5,百度+谷歌都沒有太多的信息,倒是在微軟的社區里有人提問,但沒有好的解決方案。初步嘗試關閉硬件加速功能。

關閉硬件加速有兩種辦法,一是設置注冊表值。

即新建HKEY_CURRENT_USER\SOFTWARE\Microsoft\Avalon.Graphics\DisableHWAcceleration項,設置為1關閉加速。但注冊表是系統全局設置,嘗試軟件設置。

即在軟件運行開始判斷系統圖形能力,設置是否開啟加速:

復制代碼
 switch (RenderCapability.Tier){

                    case Partical:
                    case SoftOnly:
                        RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly;
                        break;
                    case Full:
                        RenderOptions.ProcessRenderMode = RenderMode.Default;
                        break;
                }

復制代碼

這里有一個微調,即使系統認為能部分開啟硬件加速條件也使其關閉。其中注冊表設置優先於程序設置,也就是注冊表設置了關閉,軟件中是開啟不來的。 

嘗試后問題沒有解決,倒是測試提的幾個界面錯亂或者穿過軟件顯示桌面的bug沒有再現了。是因為測試的機器顯卡都比較爛,大多又沒有裝好正確的顯卡驅動,關閉硬件加速后界面正常。

 

解決思路二:

在窗口或控件上設置字體屬性就可以了,如下:

以下是代碼片段:
<UserControl x:Class="OPClient.PlatformManage.UserControlProxy"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="400" d:DesignWidth="800"
FontFamily="NSimSun" FontSize="14" TextOptions.TextFormattingMode="Display">

  

WPF4字體改善

  WPF4對字體渲染做了很大的改善,增加了TextOptions屬性,該屬性可以設置TextFormattingMode,TextRenderingMode,TextHintingMode

  1.TextFormattingMode

  它提供了兩種設置:

  · Ideal —— WPF4之前的模式

  · Display —— 新的模式,可以使字體顯示更清晰

  (一般將TextFormattingMode設置為Display,可以提高字體顯示的清晰度)

  2.TextRenderingMode

  設置渲染模式,可以有以下設置:

  Auto – This mode will use ClearType unless system settings have been set to specifically disable ClearType on the machine.

  Aliased – No antialiasing will be used to draw text.

  Grayscale – Grayscale antialiasing will be used to draw text.

  ClearType – ClearType antialising will be used to draw text.

  (一般用ClearType渲染出來的字體會比較平滑)

  3.TextHintingMode

  獲取或設置一個值,該值影響文本元素的呈現行為,這是一種性能優化方式,當您對文本元素的任何文本屬性進行動畫處理時,可以使用此方式。

  此屬性的值采用以下兩種可能的值:

  Animated 通過使用一個更高效、但視覺精確下降的平滑算法來針對動畫進行優化。(文本仍然是可讀的;精度損失並不嚴重。)

  Fixed(默認值)使用的算法針對視覺上精確的字體平滑效果進行了優化,但當將動畫應用於字體元素的屬性時,可能導致性能問題以及抖動,尤其是對於 FontSize 或轉換/定位/投影。

  (在需要對字體做一些動態效果,例如將字體縮放時,使用Animated能獲取較高的性能,但同時也影響了其顯示的清晰度)

  4.WPF4.0中同時針對東亞字體的渲染進行了優化,現在它支持點陣字體了,而開啟這個新特性十分簡單,只需為FontFamily設置一種點陣字體就可以了

  以下是一張推薦設置表 LanguageFont

Language

Font

Traditional Chinese

MingLiu

Simplified Chinese

SimSun

Japanese

MS Gothic

Korean

Gulium

Korean

Batang


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM