Windows Phone Emoji

时间:2023-03-08 16:12:27

今天基于项目的需要,研究了一下windows phone 8里面的Emoji实现。如果大家用过wp版本的微信或者qq,相比一定对它里面的表情符号影像深刻吧!是的,只要你细看一下,其实在微信里面包括两种表情符号,一种是系统自带的emoji,另一种就是微信自己加上去的。对于系统自带的我们稍后来说,让我们先看一下微信是如何自定义表情的呢?其实很简单,它只要在定义家口的时候约定一张对应表格,比如“微笑”对应一个编码,然后再对应一种图片。类似于这种:Windows Phone Emoji,然后图片存放在本地,根据对应文本信息设计一套算法解析对应的图片。

那么系统里面自带的emoji,我们应该怎样去获取呢?让我们先来讲一件emoji的实现原理吧!其实不同的emoji都有单独的对应编码,比如在windows phone里面我们可以给一个textblock.text赋值为:\ud83d\ude01,它将显示一张笑脸,对应的常用emoji编码为:

 switch (count)
{
case :
myRun1.Text = "\ud83d\ude01";
break;
case :
myRun1.Text = "\ud83d\ude02";
break;
case :
myRun1.Text = "\ud83d\ude03";
break;
case :
myRun1.Text = "\ud83d\ude04";
break;
case :
myRun1.Text = "\ud83d\ude05";
break;
case :
myRun1.Text = "\ud83d\ude06";
break;
case :
myRun1.Text = "\ud83d\ude07";
break;
case :
myRun1.Text = "\ud83d\ude08";
break;
}

如果你需要更多的话,可以将后面的16位编码一次加一,就可以变换成另一种emoji,这是对应的编码表格:Windows Phone Emoji,当然wiki里面还有更多。其实如果利用keydown事件测试的话,我们发现按下不管哪个emoji的时候,产生的key都是unknow,这就是说我们不能通过获取key的方式,来显示对应的emoji,那么我们可以不可以直接接受textblock里面emoji输入之后的text呢?其实这是可以的,我们只要自己去摘取我们需要的emoji,然后显示出来就可以了。