No estoy seguro de si hay algún paquete de SO (Código abierto) disponible. Sin embargo, en teoría, no es demasiado difícil construir este tipo de biblioteca. En chino, hay alrededor de 1300 sonidos individuales: inicial + final + tonos. Cada sonido tiene un grupo de caracteres chinos, varios números de 1 a 130 caracteres.
Es posible definir una matriz de todos los sonidos de Pinyin:
string[] pinyins = new string[] {
"a:c1c2c3...", // pinyin 1 a: character1 character2...
...
"zuo:z1z2z3z4z5..." // last pinyin (1300) zuo: character character...
};
La matriz anterior es una base para su asignación a Pinyin Chino (caracteres chinos y los tonos de Pinyin son cadenas Unicode). Luego, para cada sonido de entrada de Pinyin, una lista de caracteres se obtiene mediante una función como esta:
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;
}
que escribí hace mucho tiempo JavaScipt, donde he definido la relación entre Pinyin y los caracteres chinos. En mi blog: Get Pinyin From Chinese Characters, la secuencia de comandos se puede encontrar al ver los códigos fuente o Inspeccionar elemento en el menú contextual. En mi blog, el script se usa para convertir chino a pinyin, pero la relación se puede usar como referencia.

Para añadir inteligente función de Pinyin - muestra una lista de palabras para Pinyin, esto se puede hacer mediante la definición de todas las palabras que se usan comúnmente en el patrón similar: pinyin: palabras.
si es de entrada basada en el contacto, wouldn' ¿Es mejor dejar que ingresen caracteres "escribiendo" en la pantalla en lugar de usar la conversión pinyin? – Szabolcs
La pantalla táctil no es realmente reactiva y no será fácil escribir en pequeños cuadros de texto. Es para una aplicación médica, por lo que los médicos tienen la posibilidad de crear nuevos pacientes y luego buscarlos por su nombre, nombre, etc. Por eso no pueden implementar su solución. –
¿El motivo por el que desea personalizar la lista de candidatos es completar automáticamente el nombre del paciente? La forma en que la mayoría de los programas que conozco implementan esto es permitiendo escribir pinyin (directamente, no a través del sistema IME) y autocompletar en función de eso.Este problema es mucho más fácil que implementar un IME general y efectivo: un IME general debe manejar todos los caracteres y debe sugerir las coincidencias más probables. El más nuevo IME de MS pinyin incluso actualizaciones automáticas de Internet con las últimas estadísticas para mejorar las predicciones. y también aprende del usuario. – Szabolcs