📄 bitmapfont.java
字号:
package BitmapFont;import java.util.*;import java.awt.*;import java.awt.image.*;import java.io.*;import BitmapFont.*;public class BitmapFont { char ch; // the ascii character int width; int height; byte[] data; public BitmapFont() { } public BitmapFont(char c) { ch = c; } public void print(boolean verbose) { int widthb = ((width-1)/8+1); // number of bytes per row System.out.println("characters: "+ch+" width: "+width+" height: "+height); if(!verbose) return; for(int j=height-1; j>=0; j--) { for(int k=0; k<widthb; k++) { int s = data[j*widthb+k]; for(int l = 0; l<8; l++) { if((s&0x80)!=0) System.out.print("X"); else System.out.print("."); s = s<<1; } } System.out.println(); } } public void generate(BufferedImage bim, int[] B, FontMetrics fm) { // Graphics g = bim.getGraphics(); // FontMetrics fm = g.getFontMetrics(); int bwidth = bim.getWidth(); int bheight = bim.getHeight(); bim.getData().getDataElements(0, 0, bwidth, bheight, B); width = fm.charWidth((char)(ch)); height = fm.getHeight(); data = new byte[(((width-1)/8)+1)*height]; int i,j; int k = 0; for(i=height-1; i>=0; i--) { int bm = 0; for(j=0; j<width; j++) { int b = ((B[bwidth*i+j]&0xff00)==0)?(byte)0:(byte)1; bm = bm<<1; bm = b|bm; if(j%8==7) { data[k] = (byte)bm; bm = 0; k++; } } if(j%8!=0) { bm = bm<<(7-((j-1)%8)); data[k] = (byte)bm; k++; } } } public void read(DataInputStream fin) throws IOException{ ch = fin.readChar(); width = fin.readInt(); height = fin.readInt(); //System.out.println(ch+" "+width+" "+height); int widthb = ((width-1)/8+1); // number of bytes per row int len = widthb*height; data = new byte[len]; fin.read(data, 0, len); } public void write(DataOutputStream fout) throws IOException{ fout.writeChar(ch); fout.writeInt(width); fout.writeInt(height); fout.write(data, 0, data.length); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -