我在我的WPF应用程序中有一个触摸屏键盘,我想让用户用中文书写。
我看到Windows中有一个输入法,可以用拼音写中文。它工作得很好,但我想为我的WPF应用程序自定义它。(尤其是候选人列表)。我没有找到任何与此相关的文档。
这个想法将是用户用虚拟键盘用拼音书写,文本框旁边将有一个带有中文表意文字的选择列表。
你有什么建议来实现它吗?也许有一个库(不是来自微软的)可以做到这一点,在这种情况下,我不会使用微软的输入法?
发布于 2012-03-12 16:09:49
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.0SR1,它提供了基本库,而2.0则添加了许多WinForms或WPF控件。
(更新于2017年10月26日。许多人已经在NuGet.org上发布了基于微软代码的NuGet包,因此您也可以查看这些包。)
发布于 2012-03-12 12:45:07
不确定是否有可用的操作系统(开源)包。然而,从理论上讲,构建这样的库并不是太难。在汉语中,大约有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元素找到该脚本。在我的博客中,脚本是用来将中文转换成拼音的,但这种关系可以作为参考。

要添加智能拼音功能--显示拼音的单词列表,可以通过以类似的模式定义所有常用单词来实现:拼音:单词。
https://stackoverflow.com/questions/9535408
复制相似问题