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