【STM32 .Net MF开发板学习-28】中文显示(WPF方式)
在《为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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?