fontmaptest.java
来自「java learn PPT java learn PPT java learn」· Java 代码 · 共 142 行
JAVA
142 行
import java.applet.*;
import java.awt.*;
import java.awt.image.*;
import java.awt.geom.*;
import java.util.*;
public class FontMapTest extends Applet implements Runnable
{
// 动画线程
private Thread animation;
// 绘制字符串的FontMap
private FontMap fontMap;
// 要绘制的旧数字
private int number = -100;
public void init()
{
// fontMap的键将是代表每一个数字的字符串
Object[] keys = new Object[10];
for(int i = 0; i < 10; i++)
{
keys[i] = String.valueOf(i);
}
// 加载10个图像到图像数组中;每一个大小为20x20像素
// 并且有一个1像素的边
Image[] images = loadImageStrip("fontmap2.gif", 10, 20, 20, 1);
// 创建FontMap
fontMap = new FontMap(keys, images);
fontMap.putImage(",",getImage(getDocumentBase(),"comma.gif"));
fontMap.putImage("-",getImage(getDocumentBase(),"minus.gif"));
// 创建一个BufferedImage作为FontMap的默认图像
// 由于图像有一个1像素的边, 实际图像的大小为19x19像素
BufferedImage bi = new BufferedImage(19, 19, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = bi.createGraphics();
g2d.setPaint(Color.RED);
g2d.fill(new Rectangle(19, 19));
g2d.setPaint(Color.WHITE);
g2d.draw(new Rectangle(1, 1, 17, 17));
g2d.draw(new Line2D.Double(1, 1, 17, 17));
g2d.draw(new Line2D.Double(17, 1, 1, 17));
fontMap.setDefaultImage(bi);
setBackground(Color.BLACK);
} // init
// 从给定的文件中加载图像数组
public Image[] loadImageStrip(
String filename, // 要加载的文件
int numImages, // 加载图像的数量
int cellWidth, // 每一个单元的宽和高
int cellHeight,
int cellBorder // 单元的边宽
)
{
// 作为动画帧的图像数组
Image[] images = new Image[numImages];
// 为这个Component创建一个MediaTracker对象
MediaTracker mt = new MediaTracker(this);
// 加载住图像条
Image img = getImage(getDocumentBase(), filename);
mt.addImage(img, 0);
try
{
// 等待加载主图像
mt.waitForID(0);
}
catch(InterruptedException e) { /* 什么也不做 */ }
// 计算列的数目以获取分开的单元
int numCols = img.getWidth(this) / cellWidth;
// 得到主图像的ImageProducer来源
ImageProducer sourceProducer = img.getSource();
// 加载每一个单元!
for(int i = 0; i < numImages; i++)
{
images[i] = loadCell(sourceProducer,
((i%numCols)*cellWidth)+cellBorder,
((i/numCols)*cellHeight)+cellBorder,
cellWidth-cellBorder,
cellHeight-cellBorder);
}
return images;
}
// 假设区域给定,从ImageProducer中加载一个单元
public Image loadCell(
ImageProducer ip,
int x, int y,
int width, int height
)
{
return createImage(new FilteredImageSource(ip,
new CropImageFilter(x, y, width, height)));
}
public void start()
{
// 启动动画线程
animation = new Thread(this);
animation.start();
}
public void stop()
{
animation = null;
}
public void run()
{
/*Thread t = Thread.currentThread();
while (t == animation)
{
try
{ Thread.sleep(100);
}
catch(InterruptedException e)
{ break;
}
repaint();
} */
} // run
public void paint(Graphics g)
{
Graphics2D g2d = (Graphics2D)g;
// 在(30, 30)绘制数字
//fontMap.drawString(String.valueOf(number++), 30, 30, g2d);
fontMap.drawString("-110,005,215", 30, 30, g2d);
} // paint
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?