WPF_界面_图片/界面/文字模糊解决之道整理

摘要:
模糊图像:图像大小:检查图像,png,DPI=72,Stretch=“None”,原始图像大小与xaml中写入的大小一致。线性使用线性位图缩放。虽然它比“高质量”模式更快,但其输出质量更低。NearestNeighbor使用最近邻居位图缩放,在使用软件光栅化器时,这比LowQuality模式提供更好的性能。UI元素。SnapsToDevicePixels属性获取或设置一个值,该值确定在元素渲染期间是否应使用设备特定的像素设置。(文本仍然可读;精度损失并不严重。

图片模糊:

图片尺寸:

检查图片,png, DPI=72,Stretch="None",原图尺寸和xaml里面写的尺寸一致。如果替换为大尺寸的原图,使用时,size写的小一点,同比例缩小,没问题。

布局复杂程度:

把图片拷贝到空白的项目里面,发现有的图片模糊,有的不模糊。布局复杂一点,模糊的概率大。改变项目中的xaml 布局,神奇的出现了,左右两个边清晰了,上下还是模糊的,换个地方,上下左右都模糊。

图片缩放反方式:

<Image>属性:RenderOptions.BitmapScalingMode里面枚举值:

Unspecified使用默认位图缩放模式,即 Linear。

LowQuality使用双线性位图缩放,虽然速度比 HighQuality 快,但输出质量较低。 LowQuality 模式与 Linear 模式相同。

HighQuality使用高质量位图缩放,虽然速度比 LowQuality 模式慢,但输出质量更高。 HighQuality 模式与 Fant 模式相同。

Linear使用线性位图缩放,虽然速度比 HighQuality 模式快,但输出质量较低。

Fant使用超高质量 Fant 位图缩放,虽然速度比所有其他位图缩放模式都慢,但输出质量更高。

NearestNeighbor使用最近邻域位图缩放,当使用软件光栅器时,该缩放提供优于 LowQuality 模式的性能。 该模式常用于放大位图。

替换控件:

Rectangle+ImageBrush,替换工作量大,可修改

边缘模糊:(抗锯齿)
1)UserLayoutRounding为False,导致控件布局相对屏幕若不是整数则不会四舍五入,导致边缘模糊。
UIElement.UseLayoutRounding 属性
获取或设置一个值,该值确定对象及其可视化子树的呈现是否应使用将呈现与整像素对齐的舍入行为。(一般在容器元素上设置, 发生在Measure&Arrange期间) 
元素对齐:
2)SnapsToDevicePixels默认为false, 为true可以让元素像素级对齐。
UIElement.SnapsToDevicePixels 属性

获取或设置一个值,该值决定呈现元素期间是否应使用设备特定的像素设置。这是一个依赖项属性。(一般在根元素设置, 发生在Render, 不是容器元素)

文字渲染:

WPF4.0 对字体渲染做了很大的改善,增加了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设置一种点阵字体就可以了

以下是一张推荐设置表

Language

Font

Traditional Chinese

MingLiu

Simplified Chinese

SimSun

Japanese

MS Gothic

Korean

Gulium

Korean

Batang

免责声明:文章转载自《WPF_界面_图片/界面/文字模糊解决之道整理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Tomcat热部署与热加载Anonymous Access的理解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

微软WPF技术应用与实践系列(窗体与导航+容器+模型+数据绑定配多个应用案例)

课程学习地址:http://www.ibeifeng.com/goods.php?id=160 自从微软推出第一个版本的.NET Framework,已经过去差不多8年了。3.0 是第一个随操作系统发布的框架,它附带在每个Windows Vista中,也可以支持Windows XP SP2 和 Windows Server 2003。由于.NET 2.0和...

【WPF学习】第四十九章 基本动画

  在前一章已经学习过WPF动画的第一条规则——每个动画依赖于一个依赖项属性。然而,还有另一个限制。为了实现属性的动态化(换句话说,使用基于时间的方式改变属性的值),需要有支持相应数据类型的动画类。例如,Button.Width属性使用双精度数据类型。为实现属性的动态化,需要使用DoubleAnimation类。但Button.Paddin属性使用的是Th...

WPF学习笔记-行为

样式和资源字典能在一定范围上设置界面的属性效果,但是这些都是相对的是静态的,即使是动态的,也是先定义好的,无法直接按人的操作行为去设置效果。 这里来实现拖动功能,需要引用System.Windows.Interactivity.dll程序集 一,创建行为 1 using System; 2 using System.Collections.Gener...

WPF外包公司—北京动点飞扬软件:WPF技术分享—Prism V2之旅(1)

概述     如果你在开发wpf程序,应该听说过The Composite Application Guidance for WPF(以下简称prism)     总而言之,prism是帮助你开发复杂的wpf应用程序的。希望在看完此系列教程以后能对你有所帮助.     从去年正式版发布至今,将近快半年了.silverlight 2正版的推出.prism也开...

WPF 2D绘图(3)PathGeometry

PathGeometry可以创建任意的2D图形形状。 其内部通过PathSegment集合来实现 如画2个三角形 <Path Stroke="Black" StrokeThickness="1"> <Path.Data> <PathGeometry>...

WPF中RadioButton绑定数据的正确方法

RadioButton一般用于单选的时候,也就是从一组值中选择一个值。 比如性别有“男”和“女”两种取值,而对于一个员工的实例来说,性别的取值要么是男,要么是女。 这种时候一般就会用到RadioButton。 RadioButton有一个IsChecked属性用于表示是否选中,IsChecked属性的值类型是bool,只能直接绑定bool类型的值。 然而对...