【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






本文转自yefanqiu51CTO博客,原文链接:http://blog.51cto.com/yfsoft/509254,如需转载请自行联系原作者

相关文章
|
Windows
.Net Micro Framework研究—中文显示
微软示例程序中,仅支持两种字体(small.tinyfnt和NinaB.tinyfnt),并不支持中文。
582 0
|
Windows
在Corex-M3开发板上移植.Net Micro Framework系列文章
.NET Micro Framework 将 .NET 的可靠性和效率与 Visual Studio® 的高生产率结合起来,以针对价格较低、资源受限的小型设备开发应用程序,可帮助人们使用熟悉的 Visual Studio 工具来构建托管的嵌入式应用程序。
621 0
|
芯片
免费发放firmwave,打造史上最低价.Net MF开发板
很久以前就曾多方位思考限制.Net Micro Framework发展的原因是什么?在物联网和Cortex-M3大行其道的今天,应该有更大的发展空间才对,为什么现在还是关注者甚少?我想主要原因有三,一、源码代码是否开源;二、是否有低价开发板;三、TinyCLR是否够小。
740 0
【STM32 .Net MF开发板学习-03】TinyGUI绘图示例
.Net Micro Framework官方图形库是WPF,由于目前ST Cortex-M3开发板RAM太小,最大才512K(常见是128K或256k),并且Cortex-M3的CPU主频也不太高,运行WPF图形框架显得过于重了,所以我这边推出了轻量级图形库TinyGUI
576 0
|
内存技术
【STM32 .Net MF开发板学习-07】全屏位图无闪烁显示
16位320*240的位图大小为150K字节,而对于EM-STM3210E开发板来说,RAM仅有128K,远不够显示一幅完整位图,红牛的开发板即使有256K的RAM,但是刨去堆、栈及TinyCLR本身所用,剩下的也不多了,所以要显示全屏位图,必须分块显示。
512 0
|
芯片 内存技术
【STM32 .Net MF开发板学习-10】SPI测试之触摸屏坐标获取
SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(用于单向传输时,也就是半双工方式)
678 0
|
芯片
【STM32 .Net MF开发板学习-11】步进电机控制(非PWM模式)
选用的步进电机的型号为28BYJ-48(或MP28GA,5V,转速比1/64),驱动电路选用uln2003芯片的驱动板
892 0
【STM32 .Net MF开发板学习-20】蓝牙遥控智能小车(手机模式)
目前大部分手机也都支持蓝牙接口,所以基于此,我们借用iRobot的蓝牙模块,就可以用手机直接遥控智能小车了。
573 0
【STM32 .Net MF开发板学习-22】超声波测距模块研究
智能小车目前已经可以通过各种方式进行遥控了,不过做到这一步还远远不够,我们需要智能小车有自己的“思维”,根据需要进行进退、转向或停止。要做到这一步,必须让智能小车有自己的感知“器官”,第一步我们先添加测距传感器,以后我们会陆续研究寻际、摄像头等传感器,让所谓的智能小车,更加“智能”。
561 0
【STM32 .Net MF开发板学习-24】激光防盗模型
在各种以高科技偷盗为主题的电影中,我们常可以看到激光防盗系统,一根根红色的激光线构成了三维立体防盗体系。今天我们就借助红外激光头和光敏电阻做一个这样的防盗模型,当红外线被阻断后,开发板板上的蜂鸣器就会报警。
407 0