【STM32 .Net MF开发板学习-28】中文显示(WPF方式)

简介:    在《为Cortex-M3打造轻量级TinyGUI》中我们提到.NET MF的官方图形库为WPF,考虑到内存的限制和CPU的性能,所以我们开发了TinyGUI库,并在《TinyGUI绘图示例》、《TinyGUI位图显示》和《让TinyGUI库支持模拟器》文章中我们相继介绍了TinyGUI的功能和特性,但是唯一美中不足的是,无法显示中文字体。

   在《Cortex-M3打造轻量级TinyGUI》中我们提到.NET MF的官方图形库为WPF,考虑到内存的限制和CPU的性能,所以我们开发了TinyGUI库,并在《TinyGUI绘图示例》、《TinyGUI位图显示》和《TinyGUI库支持模拟器》文章中我们相继介绍了TinyGUI的功能和特性,但是唯一美中不足的是,无法显示中文字体。

要想灵活的显示各种字体(包括中文或其它国家语言文字),还是需要WPF提供的字体显示功能(曾打算把WPF中的文字显示模块移植到TinyGUI库中,发现相关内容太多,即使移植成功,TinyGUI也不是轻量级图库了)。

.NET MF的字体是专门定制的,为Tinyfnt字库,可以通过工具把Windows平台的字体转换为Tinyfnt字体,这方面的内容,可以参考翁祖泉老师写的文章《如何在.NET Micro Framework 的应用程序中添加中文字体?》,不过要想快速生成字库,还得需要我所编写的字库生成工具,请参考《Tinyfnt字体研究》和《.Net Micro Framework研究—中文显示》文章中的介绍。

字库生成后,就可以进行编程测试了,核心代码如下:

internal sealed class WindowsDrawing : Window

{

    public override void OnRender(DrawingContext dc)

    {

        Color c = ColorUtility.ColorFromRGB(128, 0, 255);

        Brush b = new SolidColorBrush(c);

        Pen p = new Pen(c);

        //绘制背景(绘矩形)

        dc.DrawRectangle(b, p, 0, 0, Width, Height);

        //写文字

        c = ColorUtility.ColorFromRGB(0, 255, 255);

        dc.DrawText("叶帆工作室[YFSoft]", Resources.GetFont(Resources.FontResources.S_9), c, 5, 5);

        c = Colors.Black;

        dc.DrawText("叶帆工作室[YFSoft]", Resources.GetFont(Resources.FontResources.z_12), c, 5, 25);

        c = Colors.Red;

        dc.DrawText("叶帆工作室[YFSoft]", Resources.GetFont(Resources.FontResources.MS_16), c, 5, 45);

        c = Colors.Green;

        dc.DrawText("叶帆工作室[YFSoft]", Resources.GetFont(Resources.FontResources.l_24), c, 5, 65);

        c = Colors.White;

        dc.DrawText("叶帆工作室[YFSoft]", Resources.GetFont(Resources.FontResources.hp_28), c, 5, 95);

    }

}

部署到开发板中的效果如下:

 

需要注意的是,开发板必须部署专属的WPF固件(文末已附相关链接),此外由于开发板上的SRAM有限,虽然支持了WPF,但是对一些内存需求比较大的应用程序,还是无法正常运行的。

 

WPF固件:http://www.sky-walker.com.cn/MFRelease/firmware/mfv41_firmware_redox_wpf.rar

源码示例:http://www.sky-walker.com.cn/MFRelease/Sample/MFFontTest.rar

MF论坛http://space.cnblogs.com/group/MFSoft/

MF开发板:http://item.taobao.com/item.htm?id=7117999726

QQ群:127465602

相关文章
|
7月前
|
XML 开发框架 前端开发
WPF学习之基础知识篇
WPF(Windows Presentation Foundation)具有一个复杂且强大的架构,旨在提供丰富的用户界面、图形、动画和多媒体功能。
207 9
|
12月前
|
前端开发 C#
WPF学习小记
WPF学习小记
|
6月前
|
Java 物联网 C#
C#/.NET/.NET Core学习路线集合,学习不迷路!
C#/.NET/.NET Core学习路线集合,学习不迷路!
299 0
|
12月前
|
开发框架 .NET 中间件
C#/.NET快速上手学习资料集(让现在的自己不再迷茫)
C#/.NET快速上手学习资料集(让现在的自己不再迷茫)
303 8
|
6月前
|
存储 设计模式 编解码
.NET 8.0 通用管理平台,支持模块化、WinForms 和 WPF
【11月更文挑战第5天】本文分析了.NET 8.0 通用管理平台在模块化、WinForms 和 WPF 方面的优势。模块化设计提升了系统的可维护性和可扩展性,提高了代码复用性;WinForms 提供了丰富的控件库和简单易用的开发模式,技术成熟稳定;WPF 支持强大的数据绑定和 MVVM 模式,具备丰富的图形和动画功能,以及灵活的布局系统。
263 2
|
7月前
|
设计模式 前端开发 C#
使用 Prism 框架实现导航.NET 6.0 + WPF
使用 Prism 框架实现导航.NET 6.0 + WPF
235 10
学习计算机组成原理(王道考研)------第十一天https://zhengyz.blog.csdn.net/article/details/121706379?spm=1001.2014.3001.5502
这篇文章是关于计算机组成原理的王道考研学习笔记,主要介绍了半导体存储器RAM和ROM的相关知识。
学习计算机组成原理(王道考研)------第十一天https://zhengyz.blog.csdn.net/article/details/121706379?spm=1001.2014.3001.5502
|
7月前
|
开发框架 缓存 算法
开源且实用的C#/.NET编程技巧练习宝库(学习,工作,实践干货)
开源且实用的C#/.NET编程技巧练习宝库(学习,工作,实践干货)
729 0
|
9月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【文献学习】Phase-Aware Speech Enhancement with Deep Complex U-Net
文章介绍了Deep Complex U-Net模型,用于复数值的语音增强,提出了新的极坐标掩码方法和wSDR损失函数,并通过多种评估指标验证了其性能。
117 1
|
9月前
|
数据库 C# 开发者
WPF开发者必读:揭秘ADO.NET与Entity Framework数据库交互秘籍,轻松实现企业级应用!
【8月更文挑战第31天】在现代软件开发中,WPF 与数据库的交互对于构建企业级应用至关重要。本文介绍了如何利用 ADO.NET 和 Entity Framework 在 WPF 应用中访问和操作数据库。ADO.NET 是 .NET Framework 中用于访问各类数据库(如 SQL Server、MySQL 等)的类库;Entity Framework 则是一种 ORM 框架,支持面向对象的数据操作。文章通过示例展示了如何在 WPF 应用中集成这两种技术,提高开发效率。
188 0