现在的位置: 首页 > 综合 > 正文

多叉树解析关键字,模拟qq(飞信)表情实现。

2013年09月09日 ⁄ 综合 ⁄ 共 784字 ⁄ 字号 评论关闭

在qq(飞信)中我们输入"/微笑"到聊天窗口中就可以显示为微笑的图片

如何实现这种“文本->图片”的转换,这就使用到了多叉树的数据结构。整个过程需要三步:

第一步:准备好表情资源。

首先说以下表情图片的特殊性,由于表情都是png格式,为了节省空间将所有表情合成为一张png图片。

拿表情前3个,微笑 大笑眨眼  为例,每一个表情定义一个结构体

structEmotionDataBase

{

m_EmotionIndex //表情的序号

m_EmotionName  //表情名字

m_EmotionTrace //其他信息

m_pBmp         //表情图片

}

我们给“微笑”,“大笑”,“眨眼”三个表情进行编号(index)1000,1001,1002。由于表情并定义一个map<int , EmotionDataBase>,目的是通过index可以找到表情所有信息。程序启动后,将表情大图拆分成小图放到EmotionDataBase里,同时将表情的名字也放到EmotionDataBase里。

到此,表情资源map已经准备好了。

第二步:创建表情多叉树。

下面是多叉树的结构。当然这个结构很简单,因为除了遍历没有其他操作。

class  EmotionTreeNode 

{

public:

int                         m_EmotionIndex;//表情index

CPChar                      m_EmotionSymbol;//表情单个字符

vector<EmotionTreeNode*>*   m_Child;//孩子

}

第三步,遍历多叉树找到表情的index。

多叉树的叶子节点存储的就是这些编号1000,1001等等。然后用这个编号到表情map资源里找到对应的图片,最后显示出来图片即可。

源码我放到:http://download.csdn.net/detail/hherima/5161117 


抱歉!评论已关闭.