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等英文字体,清晰度却是明显提高了。(亲测有效)

相关文章
相关标签/搜索