Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 623|回复: 0

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

[复制链接]
  • TA的每日心情
    奋斗
    2025-3-18 14:43
  • 签到天数: 805 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    73万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    731050
    发表于 2021-6-4 15:52:07 | 显示全部楼层 |阅读模式

    问题刚刚出现时当时还在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

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-4-21 07:04 , Processed in 0.065590 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表