日期:2014-05-20  浏览次数:20601 次

请求一个字符串数组显示的算法
一组字符串数组,里面的有的字符串会超出一屏幕,我判断如果有超出屏幕的字符串把他分成两段,可是显示的时候就会重叠在一起,不知道有什么算法会很好的显示出来呢。

如下:

(原始)
----------------------|
                                            |
撒旦分类萨克据了解啊东|方路甲胺磷
乐山大佛决定了撒             |  
萨拉房间里空间拉动积分|垃圾发电萨拉
阿斯利康到访                     |
打开了法                             |    
萨拉;福。建安拉沙德积|分辣椒素代理费
                                            |
                                            |  
-----------------------


理想中的
----------------------|
                                            |
撒旦分类萨克据了解啊东|
方路甲胺磷                         |
乐山大佛决定了撒             |  
萨拉房间里空间拉动积分|
垃圾发电萨拉                     |
阿斯利康到访                     |
打开了法                             |    
萨拉;福。建安拉沙德积|
分辣椒素代理费                 |
-----------------------

有什么好的算法吗?请指教

------解决方案--------------------
把你的代码贴出来啊,肯定是你在画的时候,位置没有控制好
------解决方案--------------------
不可以设置那个控件的属性吗??
------解决方案--------------------
哈哈哈.容易,应该不难解决.
等我慢慢给你说思路啊.
嘿嘿,解决了把分给我呀.

------解决方案--------------------
http://sf.net/projects/j2me2dgamelib
完全开源的J2me2D游戏开发类库,提供了关于文字显示的完善解决方案
自动根据显示宽度切分字符串,支持随意调整文字颜色,字体,下划线,居中,段落抬头缩进等
------解决方案--------------------
timer时间在跑```可以计算lines的长度,既要显示的行数, 然后计算在timer时间内显示每1行字幕所需要的时间,在timer跑完的时候刚好显示完.
如果要在固定的时间显示固定的字幕,且字幕切割成n段的话,只有加快这n段字幕的显示速度了,
比如要在timer[i]显示lines[k],lines[k+1],先要计算timer[i]所要执行的时间,然后再确定lines[k]+lines[k+1]的显示速度,..遇到这种特殊情况 多写1个方法来处理比较好
------解决方案--------------------
Font类包含了测量给定字体的某个特定字符的大小(尺寸)的方法。当你处理true-type字体的时候,需要知道其字符的宽度是不同的(例如,“W”就比“I”宽)。这就需要使用Font.charWidth()单独测量每个字符。
再得到屏幕的宽度,判断后换行
int width = getWidth();
 int lineWidth = 0;
 int charWidth = 0;
 int y = 10;
 int x = 0;
 char ch;
 for(int ccnt=0; ccnt < data.length; ccnt++)
 {
  ch = data[ccnt];
  //测量要绘制的字符
  charWidth = font.charWidth(ch);
  lineWidth = lineWidth + charWidth;
  //看是否需要新的行
  if (lineWidth > width)
  {
   y = y + fontHeight;
   lineWidth = 0;
   x = 0;
  }

------解决方案--------------------
/**显示字符串,并自动换行,分页,返回页数。
* @param g
* @param str 显示内容
* @param page 当前显示页
* @param x 显示范围