我的编程空间,编程开发者的网络收藏夹
学习永远不晚

JavaMe开发中低级界面绘图怎么进行点阵字

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

JavaMe开发中低级界面绘图怎么进行点阵字

JavaMe开发中低级界面绘图怎么进行点阵字,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

【问题描述】JavaMe自带的字体只有三种:Font.SIZE_SMALL、Font.SIZE_MEDIA和Font.SIZE_LARGE,所谓的Font.SIZE_LARGE其实也不是很大。如果要绘制其他字号的字体该怎么办呢?运用低级界面Canvas绘制的点阵字是一个不错的选择。

【字模工具】

晓奇工作室

取模方式:从左到右从上到下,横向8点左高位

【分析】

所谓“点阵字”就是文字是由点阵构成的。点阵字有两个基本属性,那就是宽(width)和高(height)。先看一个例子:

JavaMe开发中低级界面绘图怎么进行点阵字

如图1所示,Asc5x8表示宽度为5,高度为8的点阵字集。一个char型的字符能表示8位。取模工具实际上是用二进制“1”,表示点阵的文字。用二进制的“0”,表示非文字的空白块。以Asc5x8的“!”为例进行讲解:

0x20,0x20,0x20,0x20,0x20,0x00,0x20,0x00, // -!-

对应的点阵为:

00100000

00100000

00100000

00100000

00100000

00000000

00100000

00000000

注意到,如果将“1”替换为像素点显示,而“0”替换为空白块。则刚好显示为一个“!”号。宽度为5,所以用一个字节表示就可以了。如果宽度超过一个字节,那么如何计算需要多少个字节才能表示宽度呢?原则是,宽度的表示必须为字节的倍数。如宽度为9,那么超过一个字节,所以用2个字节表示。

总结宽度所需字节计算公式如下:

n = (width-1)/8+1

Asc5x8中width即为5.

那么高度如何计算呢?高度其实不用进行计算,由取模软件完成了。

明白上述原理后,就很简单了。且看代码。

【代码清单】

package com.token.view.components;   import javax.microedition.lcdui.Graphics;  import javax.microedition.lcdui.game.GameCanvas;   public class CustomFont {            public final char font24x48[][] =           // ASCII      {          {              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // - -              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00         },           {              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // -!-              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,              0x00,0x78,0x00,0x00,0x78,0x00,0x00,0x78,              0x00,0x00,0x78,0x00,0x00,0x78,0x00,0x00,              0x78,0x00,0x00,0x78,0x00,0x00,0x78,0x00,              0x00,0x78,0x00,0x00,0x78,0x00,0x00,0x30,              0x00,0x00,0x30,0x00,0x00,0x30,0x00,0x00,              0x30,0x00,0x00,0x30,0x00,0x00,0x30,0x00,              0x00,0x30,0x00,0x00,0x30,0x00,0x00,0x30,              0x00,0x00,0x30,0x00,0x00,0x30,0x00,0x00,              0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x70,0x00,0x00,0xF8,0x00,0x00,              0xF8,0x00,0x00,0xF8,0x00,0x00,0x70,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00         },           {              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // -"-              0x00,0x00,0xC0,0xC0,0x01,0xE1,0xE0,0x03,              0xE3,0xE0,0x03,0xC3,0xC0,0x07,0x87,0x80,              0x07,0x07,0x00,0x0E,0x0E,0x00,0x0C,0x0C,              0x00,0x18,0x18,0x00,0x10,0x10,0x00,0x20,              0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00         },                    ...           {              0x07,0x80,0x00,0x1F,0xC0,0x00,0x10,0xE0,  // --              0x04,0x20,0x70,0x04,0x20,0x38,0x08,0x40,              0x1C,0x08,0x40,0x0F,0x10,0x00,0x07,0xF0,              0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00         }          };                    public CustomFont()      {                }            public void drawmat(GameCanvas canvas, Graphics g, char mat[], int w, int h, int x, int y, int color)      {          int i,j,k,n;                    n = (w-1)/8+1;          for(j=0; j<h; j++)          {              for(i=0; i<n; i++)              {                  for(k=0; k<8; k++)                  {                      if (!((mat[j * n + i] & (0x80 >> k)) == 0))                                  {                             g.setColor(color);                                         g.drawLine(x + i * 8 + k, y + j, x + i * 8 + k, y + j);                                     }                      }              }          }      }   }

n就是表示整个宽度需要的字节数,由于宽度为24,故需要3个字节表示。j记录纵向(高度)位置。代码的处理,就是通过一个画线函数进行的。每次以字节为单位(变量k处理),对“1”进行检测,检测到1后,记录k的位置。

【调用方法】

CustomFont主要用于GameCanvas派生的类。在继承GameCanvas的类中:

(1)声明对象

private CustomFont cf;

(2) 初始化对象(在构造函数中)

cf = new CustomFont();

(3) 调用方法(画字符串passwd)

for(int i=0; i<passwd.length(); i++)  {                            cf.drawmat(this, graphics, cf.font24x48[passwd.charAt(i)-' '], 24, 48, (width-6*24)/2+i*24, (height-48)/3, Color.WHITE);  }

【效果】

图2中,框中的文字就是通过绘制得到的。

JavaMe开发中低级界面绘图怎么进行点阵字

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网行业资讯频道,感谢您对编程网的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

JavaMe开发中低级界面绘图怎么进行点阵字

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

JavaMe开发中低级界面绘图怎么进行点阵字

JavaMe开发中低级界面绘图怎么进行点阵字,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。【问题描述】JavaMe自带的字体只有三种:Font.SIZE_SMA
2023-06-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录