返回顶部
首页 > 资讯 > 精选 >JavaMe开发中低级界面绘图怎么进行点阵字
  • 794
分享到

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

2023-06-17 10:06:28 794人浏览 安东尼
摘要

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

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开发中低级界面绘图怎么进行点阵字

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

--结束END--

本文标题: JavaMe开发中低级界面绘图怎么进行点阵字

本文链接: https://www.lsjlt.com/news/288358.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JavaMe开发中低级界面绘图怎么进行点阵字
    JavaMe开发中低级界面绘图怎么进行点阵字,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。【问题描述】JavaMe自带的字体只有三种:Font.SIZE_SMA...
    99+
    2023-06-17
  • JavaMe开发中怎么绘制可自动换行文本
    这期内容当中小编将会给大家带来有关JavaMe开发中怎么绘制可自动换行文本,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。【问题描述】JavaMe Graphics类中的drawString不支持文本换行,...
    99+
    2023-06-17
  • 如何在Python中进行图形界面设计和开发
    如何在Python中进行图形界面设计和开发引言:Python是一种功能强大且易于学习的编程语言,广泛应用于各种领域,包括图形界面设计和开发。Python提供了不少图形库和工具,使得开发者能够轻松地创建具有吸引力的用户界面。本文将介绍如何在P...
    99+
    2023-10-22
    Python 设计与开发 图形界面(GUI)
  • Lua中怎么进行图形界面编程
    在Lua中进行图形界面编程,可以使用第三方库如Love2D或者IUP。Love2D是一个基于Lua的2D游戏开发框架,可以用来创建图...
    99+
    2024-04-09
    Lua
  • Java图形界面开发中的高级Swing容器怎么用
    这篇文章将为大家详细讲解有关Java图形界面开发中的高级Swing容器怎么用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。我们将会了解一些构建在这些布局管理器之上的容器以及其他的一些无需布局...
    99+
    2023-06-17
  • 怎么在Python中使用PyQt5对图形界面进行美化
    今天就跟大家聊聊有关怎么在Python中使用PyQt5对图形界面进行美化,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1 软件背景的添加最简单的方法就是直接在设计界面时,在style...
    99+
    2023-06-08
  • 如何在Python中进行图形界面设计和开发的最佳实践和技术选择
    如何在Python中进行图形界面设计和开发的最佳实践和技术选择引言:随着计算机技术的高速发展,图形界面成为了人机交互的主要方式之一。作为一种编程语言,Python也提供了丰富的工具和库用于图形界面设计和开发。本文将介绍在Python中进行图...
    99+
    2023-10-22
    开发 Python 图形界面设计
  • 怎么在Android 开发中利用TextView对文字进行加粗
    这篇文章将为大家详细讲解有关怎么在Android 开发中利用TextView对文字进行加粗,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。首先自定义一个StyleSpan,在StyleSpan...
    99+
    2023-05-31
    android textview roi
  • 怎么掌握安卓中高级开发面试知识点?缓存重点都在这!
    前言之前早就说要整理一个集合方便大家,还好没有拖到2020年BATJ、字节跳动面试专题,算法专题,高端技术专题,混合开发专题,java面试专题,Android,Java小知识,到性能优化.线程.View.OpenCV.NDK等已经上传到了的...
    99+
    2023-06-04
  • Android开发中怎么实现一个从相册选择图片进行上传功能
    这期内容当中小编将会给大家带来有关Android开发中怎么实现一个从相册选择图片进行上传功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。从Android系统相册选择一张图片getImageFromAlb...
    99+
    2023-05-31
    android roi
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作