WPF4文字模糊不清晰、邊框線條粗細不一致的解決方法

軟件測試過程當中發如今一臺1600*900的分辨率電腦上文字模糊,甚至某些個文字出現壓縮扭曲算法

通過實踐,發現按下面方法能解決一點問題:express

在窗口或控件上設置字體屬性就能夠了(紅色標註部分),以下:性能優化

<UserControl x:Class="..."
             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" TextOptions.TextRenderingMode="ClearType" TextOptions.TextHintingMode="Fixed" UseLayoutRounding="True">less

 注:TextOptions.TextHintingMode="Fixed"  UseLayoutRounding="True"  必須加在窗口或控件上,不然寫在樣式裏無效佈局

主要屬性的意義:性能

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.UseLayoutRounding

獲取或設置一個值,該值肯定對象及其可視化子樹的呈現是否應使用將呈現與整像素對齊的舍入行爲。UserLayoutRounding爲False,致使控件佈局相對屏幕若不是整數則不會四捨五入,致使邊緣模糊。

 

最後:若是把‘宋體’、‘黑體’、‘微軟雅黑’這類字體設置成Times New Roman等英文字體,清晰度卻是明顯提高了。(親測有效)

相關文章
相關標籤/搜索