MIDP中一个简单的折行文本绘制办法

2008-02-23 09:24:23来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

在J2ME游戏中,我们通常要在一个指定的矩形区域内绘制一段文本,比如游戏介绍和指导信息等。每次都要重复写代码实在很烦,这里给出一个简单的折行文本的绘制方法,希望能省去你的重复劳动,不过如果你想实现按键翻页的话,那还需要你自己再加点代码:)
  1. import Javax.microedition.lcdui.Font;
  2. import javax.microedition.lcdui.Graphics;
  3. /**
  4. * GraphicsUtil
  5. *
  6. * @author Jagie
  7. *
  8. */
  9. public class GraphicsUtil {
  10. /**
  11. * 在制定矩形内,绘制折行文本,超出矩形范围的字符不显示
  12. * @param src 文本字串
  13. * @param g Graphics对象
  14. * @param x 矩形左上角x坐标
  15. * @param y 矩形左上角y坐标
  16. * @param w 矩形宽度
  17. * @param h 矩形高度
  18. * @param leftMargin 左边矩
  19. * @param topMargin 上边距
  20. * @param isVTight 行间距是否紧凑
  21. * @param fontColor 文字颜色
  22. * @param font 绘制所用字体
  23. */
  24. public static final void drawWrapString(String src, Graphics g, int x, int y, int w,
  25. int h, int leftMargin,int topMargin, boolean isVTight, int fontColor, Font font) {
  26. g.setFont(font);
  27. g.setColor(fontColor);
  28. int count = src.length();
  29. int curCharIndex = 0;
  30. int curX = x leftMargin;
  31. int curY = y topMargin;
  32. int vDelta=font.getHeight();
  33. if(isVTight){
  34. vDelta=font.getBaselinePosition();
  35. }
  36. while (curCharIndex < count) {
  37. char c = src.charAt(curCharIndex);
  38. if (c == '\n') {
  39. curX = x leftMargin;
  40. curY = vDelta;
  41. curCharIndex ;
  42. continue;
  43. } else if (c == '\t') {
  44. // 相当于2个空格
  45. curX = font.charWidth(' ')*2;
  46. curCharIndex ;
  47. continue;
  48. }
  49. if (curX font.charWidth(c) < x w) {
  50. g.drawChar(c, curX, curY, Graphics.LEFT | Graphics.TOP);
  51. curCharIndex ;
  52. curX = font.charWidth(c);
  53. } else {
  54. //考虑换行
  55. if(curY 2*font.getBaselinePosition()<y h){
  56. curY = vDelta;
  57. curX = x leftMargin;
  58. g.drawChar(c, curX, curY, Graphics.LEFT | Graphics.TOP);
  59. curCharIndex ;
  60. curX = font.charWidth(c);

    标签:

    版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:[原创]Java最佳实践笔记。(不断更新)

下一篇:如何在MIDP中实现图片放缩