Chinaunix首页 | 论坛 | 博客
  • 博客访问: 869015
  • 博文数量: 366
  • 博客积分: 10267
  • 博客等级: 上将
  • 技术积分: 4290
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-24 14:04
文章分类

全部博文(366)

文章存档

2012年(366)

分类: 嵌入式

2012-03-20 20:02:36

最近在学习C的过程中无意发现了点阵字库的东西。整理了下,在J2ME实现了下相关的算法。

对于使用少量的汉字图形程序,完全没有必要带巨大的汉字库来运行,只要内存允许,你可以把汉字字模直接定义为数组的信息存储在EXE文件里。通过这个工具,你可以把单个字模信息直接取出来,然后在源代码中粘贴。该工具的强大在于不仅可以生成12×12、16×16宋体这些存在于DOS字库的字模,而且可以生成16×16楷体、黑体甚至自定义字体的字模,而且可以提供6种字模大小供您选择并即时预览效果!对使用少量汉字的图形编程能够提供极大方便。

相对于绘制这些字体的J2ME函数是:
首先,我们要通过工具来生成点阵字库的GB2312字模,然后在图像中绘制出来,下面我给出一些字体的字模,
废话少说,具体看例子吧。

Java代码 复制代码 收藏代码
  1. import javax.microedition.lcdui.Canvas;
  2. import javax.microedition.lcdui.Graphics;
  3. class FontCanvas extends Canvas {
  4. protected void paint(Graphics g) {
  5. g.setColor(0x0);
  6. g.fillRect(0, 0, this.getWidth(), this.getHeight());
  7. drawFont(g);
  8. }
  9. void drawFont(Graphics g) {
  10. int i, j;
  11. drawmat(yi12, g,12, 50, 20, 0xFFFFFF);
  12. drawmat(er12, g,12, 50, 50, 0xFFFFFF);
  13. drawmat(dian12, g,12, 50, 80, 0xFFFFFF);
  14. drawmat(zhen12, g,12, 50, 110, 0xFFFFFF);
  15. drawmat(song16, g,16, 50, 130, 0xFF0000);
  16. drawmat(ti16, g,16, 50, 150, 0xFF0000);
  17. drawmat(zi24, g,24, 50, 180, 0x0000FF);
  18. drawmat(mo24, g,24, 50, 200, 0x00FF00);
  19. drawmat(guan48, g,48, 50, 250, 0x0000FF);
  20. // for (i = 0; i < 15; i++) {
  21. // drawmat(matarray16k + i*32, g,16, 200 + i * 15, 200, 0xFFFFFF);
  22. // }
  23. // drawmat(matarray16k + 8*32, g,16, 200 + i * 15, 200, 0xFFFFFF);
  24. // drawmat(matarray16k + 9*32,g, 16, 200 + (++i) * 15, 200, 0xFFFFFF);
  25. // drawmat(matarray16k + 10 * 32, g,16, 200 + (++i) * 15, 200, 0xFFFFFF);
  26. // for (i = 18; i < 25; i++) {
  27. // drawmat(matarray16k + (i - 3) * 32, 16, 200 + i * 15, 200, 0xFFFFFF);
  28. // }
  29. }
  30. void drawmat(char[] mat, Graphics g, int matsize, int x, int y, int color)
  31. /* 依次:字模指针、点阵大小、起始坐标(x,y)、颜色 */
  32. {
  33. int i, j, k, n;
  34. n = (matsize - 1) / 8 + 1;
  35. for (j = 0; j < matsize; j++) {
  36. for (i = 0; i < n; i++) {
  37. for (k = 0; k < 8; k++) {
  38. if (!((mat[j * n + i] & (0x80 >> k)) == 0)) /* 测试为1的位则显示 */
  39. {
  40. g.setColor(color);
  41. g.drawLine(x + i * 8 + k, y + j, x + i * 8 + k, y + j);
  42. // putpixel(x + i * 8 + k, y + j, color);
  43. }
  44. // else
  45. // g.setColor(0xFFFFFF);
  46. }
  47. }
  48. }
  49. }
  50. char yi12[] = {
  51. /* 以下是 '1' 的 12点阵宋体 字模,24 byte */
  52. 0x00, 0x00, 0x0C, 0x00, 0x1C, 0x00, 0x3C, 0x00,
  53. 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00,
  54. 0x0C, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00,
  55. };
  56. char er12[] = {
  57. /* 以下是 '2' 的 12点阵宋体 字模,24 byte */
  58. 0x00, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x03, 0x00,
  59. 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00,
  60. 0x63, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00,
  61. };
  62. char dian12[] = {
  63. /* 以下是 '点' 的 12点阵宋体 字模,24 byte */
  64. 0x04, 0x00, 0x07, 0xC0, 0x04, 0x00, 0x04, 0x00,
  65. 0x3F, 0x80, 0x20, 0x80, 0x20, 0x80, 0x3F, 0x80,
  66. 0x00, 0x00, 0x49, 0x40, 0xC9, 0x20, 0x00, 0x00,
  67. };
  68. char zhen12[] = {
  69. /* 以下是 '阵' 的 12点阵宋体 字模,24 byte */
  70. 0xF2, 0x00, 0x9F, 0xE0, 0x92, 0x00, 0xA5, 0x00,
  71. 0xA5, 0x00, 0x97, 0xE0, 0x91, 0x00, 0xB1, 0x00,
  72. 0x8F, 0xE0, 0x81, 0x00, 0x81, 0x00, 0x00, 0x00,
  73. };
  74. char song16[] = {
  75. /* 以下是 '宋' 的 16点阵宋体 字模,32 byte */
  76. 0x02, 0x00, 0x01, 0x00, 0x7F, 0xFE, 0x41, 0x04,
  77. 0x81, 0x08, 0x01, 0x00, 0x7F, 0xFC, 0x03, 0x80,
  78. 0x05, 0x80, 0x05, 0x40, 0x09, 0x20, 0x11, 0x10,
  79. 0x21, 0x0E, 0x41, 0x04, 0x01, 0x00, 0x00, 0x00,
  80. };
  81. char ti16[] = {
  82. /* 以下是 '体' 的 16点阵宋体 字模,32 byte */
  83. 0x10, 0x40, 0x18, 0x40, 0x10, 0x40, 0x20, 0x40,
  84. 0x37, 0xFC, 0x60, 0xC0, 0xA0, 0xE0, 0x21, 0x60,
  85. 0x21, 0x50, 0x22, 0x48, 0x24, 0x4E, 0x2B, 0xF4,
  86. 0x20, 0x40, 0x20, 0x40, 0x20, 0x40, 0x00, 0x00,
  87. };
  88. char zi24[] = {
  89. /* 以下是 '字' 的 24点阵隶书 字模,72 byte */
  90. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  91. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  92. 0x00, 0x00, 0x00, 0x18, 0x00, 0x08, 0x1C, 0x10,
  93. 0x1F, 0xFF, 0xF0, 0x18, 0x00, 0x30, 0x18, 0xFF,
  94. 0x10, 0x09, 0xC3, 0x90, 0x00, 0x3C, 0x00, 0x00,
  95. 0x1C, 0x00, 0x3F, 0xFF, 0xFE, 0x7E, 0x0C, 0xFE,
  96. 0x00, 0x1C, 0x04, 0x00, 0x1C, 0x00, 0x04, 0x3C,
  97. 0x00, 0x03, 0xF8, 0x00, 0x00, 0xE0, 0x00, 0x00,
  98. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  99. };
  100. char mo24[] = {
  101. /* 以下是 '模' 的 24点阵楷体_GB2312 字模,72 byte */
  102. 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x02, 0x00,
  103. 0x30, 0x03, 0x0C, 0x20, 0x03, 0x04, 0x3C, 0x02,
  104. 0x07, 0xE0, 0x02, 0x1C, 0x40, 0x02, 0x00, 0x40,
  105. 0x03, 0xC0, 0x70, 0x7E, 0x1F, 0x98, 0x02, 0x08,
  106. 0x10, 0x06, 0x0F, 0x90, 0x07, 0x88, 0x10, 0x0A,
  107. 0xCB, 0xE0, 0x1A, 0x05, 0x00, 0x12, 0x01, 0x1E,
  108. 0x22, 0x0F, 0xFE, 0x42, 0x32, 0x80, 0x02, 0x02,
  109. 0x40, 0x02, 0x04, 0x60, 0x02, 0x0C, 0x30, 0x02,
  110. 0x18, 0x1C, 0x02, 0x20, 0x0F, 0x02, 0x00, 0x00,
  111. };
  112. char guan48[] = {
  113. /* 以下是 '灌' 的 48点阵黑体 字模,288 byte */
  114. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  115. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  116. 0x00, 0x00, 0x00, 0x00, 0x03, 0xC0, 0x38, 0x00,
  117. 0x03, 0x00, 0x03, 0xC0, 0x38, 0x00, 0x07, 0x80,
  118. 0x03, 0xC0, 0x38, 0x00, 0x07, 0xC0, 0x03, 0xC0,
  119. 0x38, 0x00, 0x03, 0xF1, 0xFF, 0xFF, 0xFF, 0xFC,
  120. 0x01, 0xF9, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x79,
  121. 0xF1, 0xC0, 0x39, 0xFC, 0x00, 0x30, 0x01, 0xC0,
  122. 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  123. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  124. 0xFF, 0xF0, 0xFF, 0xE0, 0x00, 0x00, 0xFF, 0xF0,
  125. 0xFF, 0xE0, 0x00, 0x00, 0xE0, 0x70, 0xE0, 0xE0,
  126. 0x0E, 0x00, 0xE0, 0x70, 0xE0, 0xE0, 0x1F, 0x80,
  127. 0xE0, 0x70, 0xE0, 0xE0, 0x1F, 0xE0, 0xFF, 0xF0,
  128. 0xFF, 0xE0, 0x07, 0xF0, 0xFF, 0xF0, 0xFF, 0xE0,
  129. 0x01, 0xF0, 0xFF, 0xF1, 0xFF, 0xE0, 0x00, 0x60,
  130. 0x08, 0x07, 0x00, 0x00, 0x00, 0x20, 0x1E, 0x03,
  131. 0x80, 0x00, 0x00, 0x00, 0x1E, 0x03, 0x00, 0x00,
  132. 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xF0, 0x00, 0x00,
  133. 0x3F, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x3F, 0xFF,
  134. 0xFF, 0xF0, 0x00, 0x00, 0x7C, 0x03, 0x80, 0x00,
  135. 0x00, 0x20, 0x7C, 0x03, 0x80, 0x00, 0x00, 0x70,
  136. 0xFC, 0x03, 0x80, 0x00, 0x00, 0x71, 0xFF, 0xFF,
  137. 0xFF, 0xE0, 0x00, 0x73, 0xFF, 0xFF, 0xFF, 0xE0,
  138. 0x00, 0xF3, 0xBC, 0x03, 0x80, 0x60, 0x00, 0xE3,
  139. 0xBC, 0x03, 0x80, 0x00, 0x01, 0xE1, 0x3C, 0x03,
  140. 0x80, 0x00, 0x01, 0xC0, 0x3F, 0xFF, 0xFF, 0xE0,
  141. 0x01, 0xC0, 0x3F, 0xFF, 0xFF, 0xE0, 0x03, 0xC0,
  142. 0x3F, 0xFF, 0xFF, 0xE0, 0x03, 0x80, 0x3C, 0x03,
  143. 0x80, 0x00, 0x07, 0x80, 0x3C, 0x03, 0x80, 0x00,
  144. 0x0F, 0x80, 0x3C, 0x03, 0x80, 0x00, 0x0F, 0x00,
  145. 0x3F, 0xFF, 0xFF, 0xF8, 0x1F, 0x00, 0x3F, 0xFF,
  146. 0xFF, 0xF8, 0x1F, 0x00, 0x3C, 0x00, 0x00, 0x00,
  147. 0x06, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00,
  148. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  149. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  150. };
  151. }
import javax.microedition.lcdui.Canvas; import javax.microedition.lcdui.Graphics; class FontCanvas extends Canvas { protected void paint(Graphics g) { g.setColor(0x0); g.fillRect(0, 0, this.getWidth(), this.getHeight()); drawFont(g); } void drawFont(Graphics g) { int i, j; drawmat(yi12, g,12, 50, 20, 0xFFFFFF); drawmat(er12, g,12, 50, 50, 0xFFFFFF); drawmat(dian12, g,12, 50, 80, 0xFFFFFF); drawmat(zhen12, g,12, 50, 110, 0xFFFFFF); drawmat(song16, g,16, 50, 130, 0xFF0000); drawmat(ti16, g,16, 50, 150, 0xFF0000); drawmat(zi24, g,24, 50, 180, 0x0000FF); drawmat(mo24, g,24, 50, 200, 0x00FF00); drawmat(guan48, g,48, 50, 250, 0x0000FF); // for (i = 0; i < 15; i++) { // drawmat(matarray16k + i*32, g,16, 200 + i * 15, 200, 0xFFFFFF); // } // drawmat(matarray16k + 8*32, g,16, 200 + i * 15, 200, 0xFFFFFF); // drawmat(matarray16k + 9*32,g, 16, 200 + (++i) * 15, 200, 0xFFFFFF); // drawmat(matarray16k + 10 * 32, g,16, 200 + (++i) * 15, 200, 0xFFFFFF); // for (i = 18; i < 25; i++) { // drawmat(matarray16k + (i - 3) * 32, 16, 200 + i * 15, 200, 0xFFFFFF); // } } void drawmat(char[] mat, Graphics g, int matsize, int x, int y, int color) /* 依次:字模指针、点阵大小、起始坐标(x,y)、颜色 */ { int i, j, k, n; n = (matsize - 1) / 8 + 1; for (j = 0; j < matsize; j++) { for (i = 0; i < n; i++) { for (k = 0; k < 8; k++) { if (!((mat[j * n + i] & (0x80 >> k)) == 0)) /* 测试为1的位则显示 */ { g.setColor(color); g.drawLine(x + i * 8 + k, y + j, x + i * 8 + k, y + j); // putpixel(x + i * 8 + k, y + j, color); } // else // g.setColor(0xFFFFFF); } } } } char yi12[] = { /* 以下是 '1' 的 12点阵宋体 字模,24 byte */ 0x00, 0x00, 0x0C, 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, }; char er12[] = { /* 以下是 '2' 的 12点阵宋体 字模,24 byte */ 0x00, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x63, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, }; char dian12[] = { /* 以下是 '点' 的 12点阵宋体 字模,24 byte */ 0x04, 0x00, 0x07, 0xC0, 0x04, 0x00, 0x04, 0x00, 0x3F, 0x80, 0x20, 0x80, 0x20, 0x80, 0x3F, 0x80, 0x00, 0x00, 0x49, 0x40, 0xC9, 0x20, 0x00, 0x00, }; char zhen12[] = { /* 以下是 '阵' 的 12点阵宋体 字模,24 byte */ 0xF2, 0x00, 0x9F, 0xE0, 0x92, 0x00, 0xA5, 0x00, 0xA5, 0x00, 0x97, 0xE0, 0x91, 0x00, 0xB1, 0x00, 0x8F, 0xE0, 0x81, 0x00, 0x81, 0x00, 0x00, 0x00, }; char song16[] = { /* 以下是 '宋' 的 16点阵宋体 字模,32 byte */ 0x02, 0x00, 0x01, 0x00, 0x7F, 0xFE, 0x41, 0x04, 0x81, 0x08, 0x01, 0x00, 0x7F, 0xFC, 0x03, 0x80, 0x05, 0x80, 0x05, 0x40, 0x09, 0x20, 0x11, 0x10, 0x21, 0x0E, 0x41, 0x04, 0x01, 0x00, 0x00, 0x00, }; char ti16[] = { /* 以下是 '体' 的 16点阵宋体 字模,32 byte */ 0x10, 0x40, 0x18, 0x40, 0x10, 0x40, 0x20, 0x40, 0x37, 0xFC, 0x60, 0xC0, 0xA0, 0xE0, 0x21, 0x60, 0x21, 0x50, 0x22, 0x48, 0x24, 0x4E, 0x2B, 0xF4, 0x20, 0x40, 0x20, 0x40, 0x20, 0x40, 0x00, 0x00, }; char zi24[] = { /* 以下是 '字' 的 24点阵隶书 字模,72 byte */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x08, 0x1C, 0x10, 0x1F, 0xFF, 0xF0, 0x18, 0x00, 0x30, 0x18, 0xFF, 0x10, 0x09, 0xC3, 0x90, 0x00, 0x3C, 0x00, 0x00, 0x1C, 0x00, 0x3F, 0xFF, 0xFE, 0x7E, 0x0C, 0xFE, 0x00, 0x1C, 0x04, 0x00, 0x1C, 0x00, 0x04, 0x3C, 0x00, 0x03, 0xF8, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; char mo24[] = { /* 以下是 '模' 的 24点阵楷体_GB2312 字模,72 byte */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x02, 0x00, 0x30, 0x03, 0x0C, 0x20, 0x03, 0x04, 0x3C, 0x02, 0x07, 0xE0, 0x02, 0x1C, 0x40, 0x02, 0x00, 0x40, 0x03, 0xC0, 0x70, 0x7E, 0x1F, 0x98, 0x02, 0x08, 0x10, 0x06, 0x0F, 0x90, 0x07, 0x88, 0x10, 0x0A, 0xCB, 0xE0, 0x1A, 0x05, 0x00, 0x12, 0x01, 0x1E, 0x22, 0x0F, 0xFE, 0x42, 0x32, 0x80, 0x02, 0x02, 0x40, 0x02, 0x04, 0x60, 0x02, 0x0C, 0x30, 0x02, 0x18, 0x1C, 0x02, 0x20, 0x0F, 0x02, 0x00, 0x00, }; char guan48[] = { /* 以下是 '灌' 的 48点阵黑体 字模,288 byte */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC0, 0x38, 0x00, 0x03, 0x00, 0x03, 0xC0, 0x38, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x38, 0x00, 0x07, 0xC0, 0x03, 0xC0, 0x38, 0x00, 0x03, 0xF1, 0xFF, 0xFF, 0xFF, 0xFC, 0x01, 0xF9, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x79, 0xF1, 0xC0, 0x39, 0xFC, 0x00, 0x30, 0x01, 0xC0, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xF0, 0xFF, 0xE0, 0x00, 0x00, 0xFF, 0xF0, 0xFF, 0xE0, 0x00, 0x00, 0xE0, 0x70, 0xE0, 0xE0, 0x0E, 0x00, 0xE0, 0x70, 0xE0, 0xE0, 0x1F, 0x80, 0xE0, 0x70, 0xE0, 0xE0, 0x1F, 0xE0, 0xFF, 0xF0, 0xFF, 0xE0, 0x07, 0xF0, 0xFF, 0xF0, 0xFF, 0xE0, 0x01, 0xF0, 0xFF, 0xF1, 0xFF, 0xE0, 0x00, 0x60, 0x08, 0x07, 0x00, 0x00, 0x00, 0x20, 0x1E, 0x03, 0x80, 0x00, 0x00, 0x00, 0x1E, 0x03, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x7C, 0x03, 0x80, 0x00, 0x00, 0x20, 0x7C, 0x03, 0x80, 0x00, 0x00, 0x70, 0xFC, 0x03, 0x80, 0x00, 0x00, 0x71, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0x73, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0xF3, 0xBC, 0x03, 0x80, 0x60, 0x00, 0xE3, 0xBC, 0x03, 0x80, 0x00, 0x01, 0xE1, 0x3C, 0x03, 0x80, 0x00, 0x01, 0xC0, 0x3F, 0xFF, 0xFF, 0xE0, 0x01, 0xC0, 0x3F, 0xFF, 0xFF, 0xE0, 0x03, 0xC0, 0x3F, 0xFF, 0xFF, 0xE0, 0x03, 0x80, 0x3C, 0x03, 0x80, 0x00, 0x07, 0x80, 0x3C, 0x03, 0x80, 0x00, 0x0F, 0x80, 0x3C, 0x03, 0x80, 0x00, 0x0F, 0x00, 0x3F, 0xFF, 0xFF, 0xF8, 0x1F, 0x00, 0x3F, 0xFF, 0xFF, 0xF8, 0x1F, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x06, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; }

Java代码 复制代码 收藏代码
  1. import javax.microedition.lcdui.Display;
  2. import javax.microedition.midlet.MIDlet;
  3. import javax.microedition.midlet.MIDletStateChangeException;
  4. public class FontMIDlet extends MIDlet {
  5. public FontMIDlet() {
  6. // TODO Auto-generated constructor stub
  7. }
  8. protected void destroyApp(boolean unconditional)
  9. throws MIDletStateChangeException {
  10. // TODO Auto-generated method stub
  11. }
  12. protected void pauseApp() {
  13. // TODO Auto-generated method stub
  14. }
  15. protected void startApp() throws MIDletStateChangeException {
  16. Display.getDisplay(this).setCurrent(new FontCanvas());
  17. }
  18. }
import javax.microedition.lcdui.Display; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; public class FontMIDlet extends MIDlet { public FontMIDlet() { // TODO Auto-generated constructor stub } protected void destroyApp(boolean unconditional) throws MIDletStateChangeException { // TODO Auto-generated method stub } protected void pauseApp() { // TODO Auto-generated method stub } protected void startApp() throws MIDletStateChangeException { Display.getDisplay(this).setCurrent(new FontCanvas()); } }

运行截图

上述内容是从http://wuhua.iteye.com/blog/159107上copy的。

此仅仅是提供一种在J2ME上的自定义的点阵字库的实现,但是我们要是想把它集成在J2ME游戏引擎中,还相差甚远。现在摆在我们面前的至少有两大难题:

1,绘制汉字的函数效率不高。放在实际的游戏中影响整体的效果,使游戏“卡”??

2,我们应该如何管理点阵信息,如何保存,如何读取??

我会在以后的连载中逐个解决这两个问题!!

阅读(800) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~