首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

关于按钮控件上的文本的设计有关问题

2012-02-25 
关于按钮控件上的文本的设计问题。这个帖子主要想问一下我下面的两种设计思路,哪一种更高效,更好。先看一下

关于按钮控件上的文本的设计问题。
这个帖子主要想问一下我下面的两种设计思路,哪一种更高效,更好。

先看一下目标效果:


这是一张256×512的文本的纹理图片


我的主要目是如何高效的定位某一个文本的纹理坐标.


【第1种设计方案】
用2维RECT类型数组来保存所有纹理坐标

C/C++ code
struct stTextRect{    stTextRect()    {        for (int i=0; i<35; i++)        {            for (int j=0; j<4; j++)            {                TextMatrix[i][j].top    = i*13;                TextMatrix[i][j].bottom    = i*13+12;            }        }        for (int i=0; i<35; i++)        {            TextMatrix[i][0].left    = 0;            TextMatrix[i][0].right    = 17;            TextMatrix[i][1].left    = 20;            TextMatrix[i][1].right    = 53;            TextMatrix[i][2].left    = 60;            TextMatrix[i][2].right    = 109;            TextMatrix[i][3].left    = 115;            TextMatrix[i][3].right    = 180;        }    }    RECT TextMatrix[35][4];    // 存储文本的RECT};


【第2种设计方案】
用map容器来存储纹理坐标.
C/C++ code
struct stTextRect{    map<POINT, RECT> TextRectMap;    // POINT:矩阵索引  RECT:纹理坐标};



用哪种方式更好一点?
另外,我的这个设计思路可行么? 会很复杂么?

[解决办法]
一个RECT数组就行了吧,用数组下标索引,最简单。

POINT和RECT在map里是啥关系?
[解决办法]
应该使用map<wstring,RECT>吧,wstring是文本的内容,RECT是对应的区域,根据文本找到区域。
或者用unordered_map<wstring,RECT>,这是hash表,效率比map高一点。
[解决办法]
探讨
引用:应该使用map <wstring,RECT>吧,wstring是文本的内容,RECT是对应的区域,根据文本找到区域。或者用unordered_map <wstring,RECT>,这是hash表,效率比map高一点。


因为这个纹理坐标是有规律的,可以用固定的数值计算出来的,不用一个一个输入,用2维数组很好表达很处理。

如果用map <wstring,RECT>的话,那我的那种文本的位置规律将起不到什么作用。

我再想想。。

[解决办法]
探讨
引用:
如果不需要根据字符串的内容动态查询的话,就不需要记录每一个字符串保存在什么地方了,直接在源代码中指定每个按钮对应的RECT就行了。
如果需要根据字符串内容查询的话,显然应该用字符串作为查询的索引值。

主要是考虑到这个纹理图片以后将会逐步的添加更多的文本,这样的话,如果是用行列来描述纹理坐标,将很方便,不要自己去计算。

不过确实需要用字符串来做索引,来查询他的纹理坐标。至于这个纹理坐标怎么定下来。
我想,应该可以这样:就是RECT不从ini文件里读取,而是自动计算,计算的公式,就是根据图中的行列规律。行和列的值可以通过map本身的元素索引计算出。
只要向map中添加数据的顺序和图中的行列位置保持一致就可以了。

总之呢,纹理不用手工计算。只要PS的时候,按照这个规则设计就行。呵呵,把工作量转移到了美工身上。

热点排行