我的WPF应用程序中有一个触摸屏键盘,我想允许用户用中文写。
我看到Windows中有一个允许用拼音用中文写的IME。它工作得很好,但我想为我的WPF应用程序自定义它。 (特别是候选人名单)。我没有找到任何相关的文档。
用户可以使用虚拟键盘在拼音中书写,并且文本框旁边会有一个带有中文表意文字的选项列表。
您有什么建议可以实现吗?也许有一个库(不是来自微软)可以制作它,在这种情况下我不会使用MS的IME?
答案 0 :(得分:3)
不确定是否有可用的OS(开源)软件包。但是,从理论上讲,构建这种库并不难。在中文中,大约有1300个单声道:初始+最终+音调。每个声音都有一组汉字,各种数字从1到130个字符。
您可以定义所有拼音的数组:
string[] pinyins = new string[] {
"a:c1c2c3...", // pinyin 1 a: character1 character2...
...
"zuo:z1z2z3z4z5..." // last pinyin (1300) zuo: character character...
};
上面的数组是您拼音到中文的基础(汉字和拼音是unicode字符串)。然后对于每个拼音输入声音,通过如下函数获得字符列表:
string getCharacters(string aPinyin) {
string characters = null;
foreach(string item in pinyins) {
string[] temp = item.split(':');
if (temp[0].Equals(aPinyin)) {
charaters = temp[1];
break;
}
}
return characters;
}
很久以前我写了一篇JavaScipt,在那里我定义了拼音和汉字之间的关系。在我的博客:Get Pinyin From Chinese Characters中,可以通过查看上下文菜单中的源代码或Inspect Element找到该脚本。在我的博客中,该脚本用于将中文转换为拼音,但该关系可以作为参考。
要添加智能拼音功能 - 显示拼音的单词列表,可以通过定义相似模式中的所有常用单词来完成:拼音:单词。
答案 1 :(得分:3)
http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=7D1DF9CE-4AEE-467F-996E-BEC826C5DAA2
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=15251
微软实际上有很好的组件/库,但它们隐藏在Visual Studio International Feature Pack中。
请注意,您需要1.0 SR 1提供基本库,而2.0需要添加许多WinForms或WPF控件。
(2017年10月26日更新。许多人根据微软的代码在NuGet.org上发布了NuGet包,所以你也可以检查这些包。)