📄 custom_font_canvas.java
字号:
package ch10;
import java.io.*;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
//该类实现字体布局的绘制
public class Custom_Font_Canvas
extends GameCanvas {
//声明一个Custom_Font对象
private Custom_Font font;
//声明一个代表字体高度的short型属性变量
private short fontHeight;
//声明一个代表字体宽度的short型属性变量
private short fontWidth;
//声明一个代表文本行数的short型属性变量
private short rows;
//声明一个代表文本列数的short型属性变量
private short columns;
//声明一个代表左右边距的short型属性变量
private short insetX;
//声明一个代表上下边距的short型属性变量
private short insetY;
//声明一个字符数组存储显示文本内容
private char[] buffer = {
'a', 'b', 'c', 'd', 'e', 'f', 'g'};
//声明上下文对象
Graphics g;
/*
3.构造器
*/
public Custom_Font_Canvas() throws IOException {
super(false);
setTitle("绘制自定义字体实例");
//获取上下文对象
g = getGraphics();
//获取屏幕宽度和高度
int width = getWidth();
int height = getHeight();
//获取字体
font = Custom_Font.getFont("/icons/font/mono_large.png", Font.SIZE_LARGE,
Font.STYLE_PLAIN);
//获取字体高度和宽度
fontHeight = (short) font.getHeight();
fontWidth = (short) font.stringWidth("w");
//获取显示文本行数和列数
columns = (short) (width / fontWidth);
rows = (short) (height / fontHeight);
//获取上下左右边距
insetX = (short) ( (width - columns * fontWidth) / 2);
insetY = (short) ( (height - rows * fontHeight) / 2);
}
//启动绘制
public void start() {
render(g);
}
/*
4.绘制方法
*/
void render(Graphics g) {
//填充背景
g.setGrayScale(0);
g.fillRect(0, 0, getWidth(), getHeight());
//声明一个代表绘制字符索引的变量
int i;
//声明一个代表绘制字符的变量
char b;
for (int y = 0; y < rows; y++) {
for (int x = 0; x < columns; x++) {
i = y * columns + x;
if (i < buffer.length) {
b = buffer[i];
if (b != 0) {
font.drawChar(g, b,
insetX + x * fontWidth, insetY + y * fontHeight,
g.TOP | g.LEFT);
}
}
}
}
flushGraphics();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -