可能WPF太耀眼了,大家都一直在讨论它的光芒,我也是其中的一员。

当发现它给软件界面设计带来的革命性变化时,说服同事,在新项目中使用了WPF这一新技术。

无奈,项目快结束时,头头验收时说字体模糊,不能接受,只好认真对待了。

没有彻底解决,但是在很多情况下可以使用,可以解燃眉之急。

症状:比较WPF项目和WinForm下字体显示效果,WPF下文字很模糊。特别是“宋体”,简直一团糟,换了别的字体稍微好一点,但是还是无法接受,被大家推崇为最佳解决方案的“微软雅黑”也无济于事(有可能是我机器的原因)。

问题分析:字体较WinForm下模糊,是因为WPF下和WinForm使用的绘制文字引擎不一样,感觉有点矢量文字的意思,进行了模糊处理,特别是文字较小时,表现很糟糕。

解决办法:使用WinFowm下Graphics进行绘制文字到Bitmap上,然后把Bitmap转换成WPF下面的ImageSource,然后再采用DrawingContext。DrawImage(。。。)方法进行绘制图片即可。

核心代码如下:

protected override void OnRender(DrawingContext drawingContext)

{

//base.OnRender(drawingContext);

try

{

System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(txtSize.Width, txtSize.Height);

System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage(bitmap);

graphics.DrawString(Text, txtFont, TransBrush(this.Foreground), new System.Drawing.PointF(0,0));

ImageSource imageSource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(

bitmap.GetHbitmap(),

IntPtr.Zero,

System.Windows.Int32Rect.Empty,

BitmapSizeOptions.FromEmptyOptions());

drawingContext.DrawImage(imageSource, new Rect(0, 0, bitmap.Width, bitmap.Height));

}

catch { }

}

源代码如下:

源码里面有缺陷:最让我头疼的是外围容器的宽度会影响字体的清晰度,具体就是差一个像素。比如例子中Window的宽度设为300,就不清晰,有重影,如果设为301,就好了,跟WinForm是一样的。原因没有找到,猜想是WPF和WinForm之间像素坐标系统有差别有关,具体由于工作忙,就没有细究,凑合着使用了。如果有解决方案,望大家共享,呵呵,还是那样,祝大家好运,在编程中享受乐趣。

上午发了一个关于WPF中显示动画图片(如。gif图片)的例子,有些跟帖的说不详细,如果有时间我再整理吧,如果真的能用的上,自己看一下应该能懂。稍微有点复杂,呵呵。重新把链接贴出来,有需要的看一下吧,欢迎沟通。

wpf 字体模糊_WPF:解决WPF文字显示不清晰初探相关推荐

  1. wpf 字体模糊_WPF Effect 造成的字体模糊

    WPF 里面有个Effect ,暂且可以理解为 "特效" 分类. 但是有时候使用不恰当,容易出现各种毛病. 例如: 代码如下: 提示:Border 级使用 Effect 造成 Te ...

  2. 笔记本高分屏字体模糊_笔记本win8系统设置1920*1080高分屏后字体模糊的解决方法...

    有不少笔记本win8系统用户将电脑屏幕分辨率设置为1920*1080高分屏之后,发现一些第三方应用字体模糊的问题,遇到这样的问题该怎么办呢,现在给大家分享一下笔记本win8系统设置1920*1080高 ...

  3. Mac字体路径,解决matplotlib中文显示问题,超级好用~

    不需要用fc-list,找到字体路径,解决matplotlib中文显示问题. 1.找到字体路径 mac字体的路径一般都是在:/System/Library/Fonts 下 如果不放心可在:访达> ...

  4. html 字体模糊,详解css3使用transform出现字体模糊的解决办法

    这个问题很奇葩,话不多少直接上代码: .g-dialog-wrapper { position: fixed; top: 50%; left: 50%; transform: translate(-5 ...

  5. FireFox火狐浏览器字体模糊的解决办法

    FireFox火狐浏览器字体模糊的解决办法.打开选项->高级->关闭"自动启用硬件加速"! 解决问题! 转载于:https://my.oschina.net/u/179 ...

  6. win10计算机管理字体糊,win10字体模糊如何解决

    win10系统是一款优秀的消费级别的系统,深受大家广泛好评.但是有些网友在使用时也会出现一些问题,比如win10字体模糊.接下来,我就给大家介绍一下解决win10字体模糊的解决方法,赶紧来瞧瞧吧 近来 ...

  7. Firefox和IE中浏览一些网页字体模糊的解决方法

    Firefox中浏览一些网页字体模糊的解决方法 现象:Firefox中浏览一些网页字体模糊,其他网页不会 猜测:这些网页字体定义为Windows里面的字体,而linux没有这些字体,采用默认字体后变模 ...

  8. WPF字体模糊解决方案

    WPF对字体渲染做了很大的改善,与Winform窗体字体相比较,更加平滑,但是当字体大小较小时,则会出现字体模糊的现象.可通过以下方法进行改善处理: 对于XAML用户界面,通过对控件添加UseLayo ...

  9. Manjaro安装配置美化字体模糊发虚解决记录

    Manjaro安装记录 前言: ​ 记录自己Manjaro18安装的一些坑,避免下次满互联网找解决方法.在此之前试过Manjaro.Ubuntu.Fedora.linux Mint系统的pac.yum ...

最新文章

  1. 基于OpenCV的实时睡意检测系统
  2. 深入理解C++中的mutable关键字 ​
  3. Hadoop Streaming框架使用(一)
  4. what is your judgement basis?
  5. C#中的前台线程和后台线程的区别
  6. LeetCode 1945. 字符串转化后的各位数字之和
  7. 天公不作美 SpaceX再次推迟星链卫星发射
  8. Web自动化测试中使用groovy实现页面的对象化
  9. UVA10325 The Lottery【GCD+LCM】
  10. HttpClient发送POST和GET请求
  11. 转载知乎大神设置普通路由器支持IPV6
  12. 2020年同济软院夏令营经历
  13. axure中备注线_axure 备注怎么写
  14. 原生JS实现躲避粒子小游戏
  15. 卡巴斯基实验室被攻陷后的四个未解之谜
  16. bert 中文 代码 谷歌_从字到词,大词典中文BERT模型的探索之旅
  17. 政策红利:广州政府发布政务区块链工作方案|链塔智库
  18. 区块链产业赋能,区块链+游戏春天来临
  19. Bugtags 创业一年总结
  20. 交换机hybrid接口配置【华为eNSP模拟器】

热门文章

  1. Java的File.separator
  2. 手机屏和大屏LCD显示面板接口(和处理器连接的接口类似12864等单片机处理器和屏接口的8086,SPI等并口串口屏以及RGB屏接口)LVDS接口常见于液晶电视中。eDP,LVDS,MIPI,HDMI
  3. 目标关键词是什么意思?
  4. 视频教程-玩转2018微信小程序-微信开发
  5. python百度网盘API分片上传实现,纯代码
  6. 十二、Cadence 514 614 Calibre license许可问题
  7. 2017年总结-我的学习之路
  8. PAT甲级 1030 Travel Plan
  9. ARM Linux下编译freetype、sdl、sdl_ttf
  10. 【图像隐写】DCT文本嵌入+提取【含GUI Matlab源码 1850期】