`
isiqi
  • 浏览: 16474201 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

.Net Micro Framework研究—中文显示

阅读更多

试验平台:.Net Micro Framework 模拟器

微软示例程序中,仅支持两种字体(small.tinyfntNinaB.tinyfnt),并不支持中文。

翁祖泉老师在《如何在Microsoft .NET Micro Framework 的应用程序中添加中文字体?》的文章中,写了如何添加字体的方法,正如他文章所写,这是一篇介绍在.NET Micro Framework 应用程序中使用中文字体的初级入门文章。所以我觉得有必要再深入研究一下。上篇文章的链接:http://www.winbile.net/Detail.aspx?D=260,1118125,855,127 在看我的文章之前,一定先看看这篇文章,我写的内容只是这篇文章的一个补充。

MF平台支持的字体是专有格式,扩展名为tinyfnt,需要用专门的转化工具才能把windows平台上的字体转换为tinyfnt字体。

转换工具在MF SDK开发包中就有,安装后的位置为:C:\Program Files\Microsoft .NET Micro Framework\v2.0.3036\Tools\TFConvert.exe

要转换字体,需要三个条件:第一,转换工具,这个我们已经有了;第二,中文字库,直接在C:\WINDOWS\Fonts目录中选一个你需要转换的字体即可;第三,转换用的配置文件(扩展名为fntdef的文件,这个比较麻烦,我着重说一下。

配置文件中常用的命令如下:

1AddFontToProcess

格式:AddFontToProcess path

说明:填写中文字库的路径信息(字库源的路径,需要输入绝对路径),如果路径里有空格,一定用引号括起来,如示例所示:

AddFontToProcess C:\Windows\Fonts\Miramo.ttf
AddFontToProcess "C:\\Program Files\\Microsoft .NET Micro Framework\\v2.0.3036\\Tools\\Fonts\\TrueType\\Miramo.ttf"
 2SelectFont

格式:SelectFont "selectionstring"

说明:参数比较多,常用的就下面几个,余下的请看msdn的相关文章。

WEWeight)字体的厚重度,0~1000,标准的是400,粗体为700

FN(Face Name) 字体名称,如果包含空格,要用引号括起来

HEHeight)字体大小(实际测试范围1~36)

WIWidth)字体宽度(实际测试范围1~12

ITItalic)设置字体的倾斜角度

UNUnderline)设置字体下面的下划线

注意这个命令是Select Font,也就是说,从字库源中选择出指定参数的字体,.Net Mirco Framework.Net精简框架集和.Net框架集不同,它的字体的大小、加粗、斜体等等参数不能在程序中任意改变,你导出的是什么样的字体,那就是什么字体,不能改变,一出生就决定命运。例如你对同一个字符串显示不同的大小,那么对应每一个大小,都需要你导出一个字体库。
3ImportRange

格式:ImportRange start end

说明:这个比较重要,是指从字库中导出字体的起始和结束位置,可以多个命令连用。

详细的介绍在msdn上有相关说明(很可惜是英文的):ms-help://MS.VSCC.v80/MS.VSIPCC.v80/MSVS.PSDK/PSDK/PSDK_TF_Fntdef.htm

配置文件内容示例:

AddFontToProcessC:\SampleFonts\MSYH.ttf
SelectFont"WE:400,FN:
宋体"
ImportRange1996840869

注意上面的示例文件仅导出了常用的汉字,如果你用该字体显示中英文混合的字符串,你会发现其它字体全部是空格,这显然不是我们想要的结果,所以我们导出的字体不仅有中文、英文字符,还要有必要的标点符号,所以我们要用多个ImportRange命令。

这是我写的配置文件,我导出字体为华文细黑字体。

AddFontToProcess D:\SELF\MF\china\STXIHEI.TTF

SelectFont "WE:400,FN:宋体"

#英文字母和常用符号

ImportRange 32 126

#罗马数字

ImportRange 8544 8569

#各个方向的箭头

ImportRange 8592 8601

#1~10 圆圈内嵌数字

ImportRange 9312 9321

#有用的符号

ImportRange 9600 9835

#汉字

ImportRange 19968 40869

导出的大小为:695K,原字体大小9540K,不过与英文字库相比还是大的多。

如果在MF上的应用汉字很少,可以仅导出使用的字符。从这点出发,似乎根据使用的字符串,自动导出生成相应的字体库的程序又有了用武之地(以前我们在西文DOS下,显示中文字体就这么做过)。

说做就做,下面就是我完成的程序(原理很简单,根据区位码导出字符)。

(图MF071101001.jpg

我们只转换“[叶帆工作室]欢迎您”这几个字,最后我们转换的字库仅456个字节,与695K相比那差好多数量级,是不是很棒?!如果我们把上面的程序改进一下,也许可以自动根据代码创建相应的字库文件了,那就更棒了。

下面就把我们的字库加入到程序,用模拟器试一下,看看是否能正确显示汉字。

(图MF071101002.jpg

是不是很棒J

相关代码如下(记得先在资源中添加我们转换后的字库文件):

using System;

using Microsoft.SPOT;

using Microsoft.SPOT.Input;

using Microsoft.SPOT.Presentation;

using Microsoft.SPOT.Presentation.Controls;

namespace HZTest

{

public class Program : Microsoft.SPOT.Application

{

public static void Main()

{

Program myApplication = new Program();

Window mainWindow = myApplication.CreateWindow();

// Create the object that configures the GPIO pins to buttons.

GPIOButtonInputProvider inputProvider = new GPIOButtonInputProvider(null);

// Start the application

myApplication.Run(mainWindow);

}

private Window mainWindow;

public Window CreateWindow()

{

// Create a window object and set its size to the

// size of the display.

mainWindow = new Window();

mainWindow.Height = SystemMetrics.ScreenHeight;

mainWindow.Width = SystemMetrics.ScreenWidth;

// Create a single text control.

Text text = new Text();

//设置字体 yf.tinyfnt

text.Font = Resources.GetFont(Resources.FontResources.yf );

text.TextContent = "[叶帆工作室]欢迎您";

text.HorizontalAlignment = Microsoft.SPOT.Presentation.HorizontalAlignment.Center;

text.VerticalAlignment = Microsoft.SPOT.Presentation.VerticalAlignment.Center;

// Add the text control to the window.

mainWindow.Child = text;

// Connect the button handler to all of the buttons.

mainWindow.AddHandler(Buttons.ButtonUpEvent, new ButtonEventHandler(OnButtonUp), false);

// Set the window visibility to visible.

mainWindow.Visibility = Visibility.Visible;

// Attach the button focus to the window.

Buttons.Focus(mainWindow);

return mainWindow;

}

private void OnButtonUp(object sender, ButtonEventArgs e)

{

// Print the button code to the Visual Studio output window.

Debug.Print(e.Button.ToString());

}

}

}

文字部分就先介绍到这里,下面的几篇文章就该介绍一下图形方面的内容了,等图形掌握了,相信最后我们一定能在MF平台上实现一个很棒的应用。

分享到:
评论

相关推荐

    Expert .NET Micro Framework

    The Microsoft .NET Micro Framework is a small and efficient .NET runtime environment used to run managed code on devices that are too small and resource constrained for Windows CE and the Compact ...

    Microsoft .net micro framework 4.0 SDK 含源码

    在开发过程中,使用MicroFrameworkSDK.MSI这个安装文件,开发者可以在自己的机器上安装.NET Micro Framework 4.0 SDK,从而开始创建、构建和调试针对小型设备的应用程序。安装后,开发者可以在Visual Studio环境中...

    Microsoft .NET Micro Framework嵌入式编程(美 汤普逊)

    《Microsoft .NET Micro Framework嵌入式编程》是美国作者汤普逊所著的一本深入探讨.NET Micro Framework(简称.NET MF)技术的专业书籍。这本书旨在帮助读者理解和掌握如何在嵌入式系统中应用.NET Micro Framework...

    《玩转.NET Micro Framework移植-基于STM32F10x处理器》源程序.rar

    《玩转.NET Micro Framework移植-基于STM32F10x处理器》这本书的主题聚焦于将.NET Micro Framework(简称.NET MF)应用到STM32F10x系列微控制器上,这是一个涉及嵌入式系统开发、C#编程以及硬件平台集成的重要技术...

    Microsoft .NET Micro Framework 2.5 SDK

    5. **MicroFrameworkSDK.MSI**:这是一个Windows Installer包,包含了.NET Micro Framework SDK的主要组件,如编译器、类库、文档等,用于开发者在本地环境中建立和管理项目。 6. **Micro Framework SDK Release ...

    .Net Micro Framework 移植说明文档

    ### .Net Micro Framework 移植说明文档 #### 概述 .Net Micro Framework(.Net MF)是微软为小型设备设计的一个精简版的.NET框架。它不仅继承了.NET的硬件独立性,还提供了两个关键的抽象层:硬件抽象层(HAL)与...

    Expert .NET Micro Framework(德 Jens Kühner)

    11. **案例研究**:书中可能包含实际的项目案例,展示了.NET Micro Framework在不同应用场景中的应用,如智能家居设备或医疗设备。 通过阅读《Expert .NET Micro Framework》,开发者可以掌握在资源受限环境中使用...

    .net micro framework file

    .NET Micro Framework(简称.NET MF)是微软开发的一个轻量级.NET框架,主要针对嵌入式设备和物联网(IoT)应用。它提供了基础的.NET编程模型,使得开发者能够使用C#、VB.NET或其他.NET语言来编写高效能的嵌入式程序。...

    .NET Micro Framework Key文件部署说明

    ### .NET Micro Framework Key文件部署说明 #### 一、概述 .NET Micro Framework(.NET MF)是一种用于构建和运行小型嵌入式设备上的应用程序的框架。它为开发人员提供了类似于桌面版.NET Framework的功能,但针对...

    expert .net micro framework

    expert .net micro frameworkexpert .net micro frameworkexpert .net micro framework

    GHI .NET Micro Framework培训教材(英文版)

    ### GHI .NET Micro Framework 培训教材知识点解析 #### 一、关于教材与目标受众 本教材《GHI .NET Micro Framework培训教材》专为初学者设计,旨在介绍.NET Micro Framework及其在嵌入式系统开发中的应用。教材...

    .NET Micro Framework for Windows 7(X64) USB驱动安装说明

    .NET Micro Framework(简称.NET MF)是微软开发的一个嵌入式平台,主要面向资源有限的设备,如物联网(IoT)设备、智能家居控制器等。它提供了一个运行环境,使得开发者能够利用C#或VB.NET等高级语言进行编程,而无需...

    .NET Micro Framework Testing Batch File Generator

    .NET Micro Framework自动化测试工具,需.NET Micro Framework3.0和.NET Micro Framework Test Kit支持...

    .NET Micro Framework开发板使用手册(红牛开发板)

    .NET Micro Framework(简称.NET MF)是微软公司推出的一个嵌入式操作系统平台,主要设计用于资源有限的设备,如物联网(IoT)中的智能硬件、工业自动化设备和消费电子等产品。红牛开发板是一款基于.NET Micro ...

    .Net Micro Framework模拟器

    这是我自己改造的.Net Micro Framework模拟器,比windows自带的漂亮多了。 覆盖该目录下的同名文件(路径以实际开发包安装位置为准)即可。 C:\Program Files\Microsoft .NET Micro Framework\v2.0.3036\Tools 支持...

    微软.NET Micro Framework首次在ADI公司的Blackfin处理器上亮相.pdf

    .NET Micro Framework是微软开发的一个轻量级的.NET运行环境,特别设计用于资源有限的嵌入式设备。这个框架首次被引入到ADI(Analog Devices, Inc.)公司的Blackfin处理器上,为开发者提供了一种新的、高效的方式来...

Global site tag (gtag.js) - Google Analytics