如何解决OxyPlot.SkiaSharp中文显示乱码的问题

这篇文章主要讲解了“如何解决OxyPlot.SkiaSharp中文显示乱码的问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何解决OxyPlot.SkiaSharp中文显示乱码的问题”吧!

成都创新互联是创新、创意、研发型一体的综合型网站建设公司,自成立以来公司不断探索创新,始终坚持为客户提供满意周到的服务,在本地打下了良好的口碑,在过去的10多年时间我们累计服务了上千家以及全国政企客户,如花箱等企业单位,完善的项目管理流程,严格把控项目进度与质量监控加上过硬的技术实力获得客户的一致称誉。

oxyplot 图表控件功能强大,使用很广泛。最近考虑到性能使用OxyPlot.SkiaSharp替代OxyPlot.WPF,曲线图表初步测试,性能提升近10倍左右。基于SkiaSharp图形引擎的一些控件常遇见中文乱码的问题,所以改用OxyPlot.SkiaSharp时也有心里准备。默认情况下中文显示真成了乱码。如下图所示。

如何解决OxyPlot.SkiaSharp中文显示乱码的问题

于是翻了遍OxyPlot.SkiaSharp源码,看到PlotModel中的DefaultFont属性默认值是“Segoe UI”,西文无衬线体。试着改为“微软雅黑”,中文显示正常了。如下图所示。

如何解决OxyPlot.SkiaSharp中文显示乱码的问题

OxyPlot.WPF中为什么显示没问题,将WPF中TextBlock字体改为ALGERIAN后,只有英文应用了该字体,而中文则是以另外一种字体显示的。如下图所示。

如何解决OxyPlot.SkiaSharp中文显示乱码的问题

我们知道WPF的默认字体也是“Segoe UI”,为什么显示不会有问题呢,这就要提到WPF应用字体的机制了。

WPF应用程序使用属性FontFamily、FontStyle、FontWeight、FontStretch和FontSize来指定它想要的字体。在运行时,WPF会决定在应用程序运行的目标系统上使用准确的字体。这个决定是基于将前四个属性(暂时忽略FontSize)与该系统上安装的物理字体文件进行匹配。

WPF首先将提供的FontFamily与系统中找到的字体名称进行匹配。然后,它试图找到一个与所请求的FontStretch、FontStyle和FontWeight属性值最接近的字体。匹配FontStretch是最高优先级,其次是FontStyle,然后是FontWeight。

如果WPF找不到匹配的字体,它就会“退回”到与WPF一起安装的默认字体,即

C:\Windows\Fonts\GlobalUserInterface.CompositeFont

这是一种复合字体,它试图将单个字符映射到系统上可能存在的字体。也就是说中文和英文是分开映射到不同的字体上。

感谢各位的阅读,以上就是“如何解决OxyPlot.SkiaSharp中文显示乱码的问题”的内容了,经过本文的学习后,相信大家对如何解决OxyPlot.SkiaSharp中文显示乱码的问题这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


分享名称:如何解决OxyPlot.SkiaSharp中文显示乱码的问题
文章地址:http://csdahua.cn/article/psjgee.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流