在《为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

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

  1. 【STM32 .Net MF开发板学习-02】GPIO测试

    前段时间我借用市面上现成的Corex-M3开发板,打造了最低价的.Net Micro Framework开发板(参见<免费发放firmwave,打造史上最低价.Net MF开发板>),在此 ...

  2. 【STM32 .Net MF开发板学习-17】Wifi遥控智能小车

    恰好以前购买的一个PDA含Wifi功能,所以与其用PC通过Zigbee控制智能小车,不如用PDA来控制,这样更为方便,不过由于目前.NET MF开发板不直接支持Wifi功能,所以我们也只好间接控制了, ...

  3. 【STM32 .NET MF开发板学习-29】摄像头蓝牙图像远程获取

    目前生产串口摄像头的厂家有很多,每家的通信协议也不同,所以针对不同的摄像头都必须编写相对应的摄像头驱动程序. 最早做医疗项目的时候,开发过一款串口摄像头的驱动,不过是配合TinyIOs而使用,并没有把 ...

  4. 【STM32 Net MF开发板学习-27】GPRS通信实现

    GPRS是General Packet Radio Service(通用分组无线服务技术)的简称,它是GSM移动电话用户可用的一种移动数据业务.GPRS和以往连续在频道传输的方式不同,是以封包(Pac ...

  5. 【STM32 NET MF开发板学习-29】摄像头蓝牙图像远程获取

    分享一下我老师大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow 目前生产串口摄像头 ...

  6. 【STM32 .Net MF开发板学习-11】步进电机控制(非PWM模式)

    选用的步进电机的型号为28BYJ-48(或MP28GA,5V,转速比1/64),驱动电路选用 uln2003芯片的驱动板,其控制时序图如下: 四相八拍:A->AB->B ->BC - ...

  7. 【STM32 Net MF开发板学习-11】步进电机控制(非PWM模式)

    选用的步进电机的型号为28BYJ-48(或MP28GA,5V,转速比1/64),驱动电路选用uln2003芯片的驱动板,其控制时序图如下: 四相八拍:A->AB->B ->BC -& ...

  8. 【STM32 Net MF开发板学习-19】DHT11温湿度传感器通信(上)

    前段时间开发远程医疗系统(Dr.Cloud)就曾用到过温湿度传感器,不过当时考虑到集成难度,选了一个RS485接口的传感器,该传感器实现了Modbus Rtu Slave的功能,只要客户程序实现Mod ...

  9. 【STM32 .Net MF开发板学习-19】DHT11温湿度传感器通信(上)

    前段时间开发远程医疗系统(Dr.Cloud)就曾用到过温湿度传感器,不过当时考虑到集成难度,选了一个RS485接口的传感器,该传感器实现了Modbus Rtu Slave的功能,只要客户程序实现Mod ...

最新文章

  1. harmonyos开发者邀请码,HarmonyOS 2.0鸿蒙第二期开发者Beta公测申请指南
  2. 【TCP/IP 协议】 TCP/IP 基础
  3. 中国版的stackoverflow
  4. java 适用参数_Java功能的适用性
  5. 使用 Python ElementTree 生成 xml
  6. Web框架——Flask系列之自定义过滤器详解(五)
  7. JavaScript生成指定范围内的随机数
  8. 做空机构为什么合法,股票做空机构gmt如何达成盈利目标
  9. 世界银行264个国家1437项统计指标
  10. 一分钟先生:怎样给员工发奖金
  11. 生活中常见的计算机网络知识
  12. Cocos2d之Box2d基础知识
  13. . 显示隐藏文件夹选项消失时如何还原
  14. 采集美食网站3032个菜谱数据,对比各大菜系美食的数量、用料
  15. linux创建任务栏图标
  16. 多边形画椭圆算法java_运用椭圆画法,45行代码画出随意正多边形
  17. 无符号数与有符号数比较
  18. Java web15
  19. 58同城2021校招笔试-二叉树遍历
  20. 17届智能车:使用编码器计算实际路程

热门文章

  1. Python 实现队列
  2. 远程密钥登陆linux系统(putty、xshell)
  3. PCI的imagework已由freeview软件代替
  4. 从 CentOS 5.5 中精简出属于自己的专属Linux(二)
  5. 【原创】MySQL Proxy - 协议(部分摘录)
  6. 强制将IE8设置为IE7兼容模式来解析网页
  7. 领域驱动设计DDD之读书笔记
  8. [20170203]dg磁盘空间不足的处理.txt
  9. docker 删除默认连接_database – 如何从已删除的Docker容器中恢复数据?如何将其重新连接到数据?...
  10. python 是否可以一键修图_ps如何快速批量修图?