Thinking in Java
Java开发技巧与实践
posts - 9,comments - 6,trackbacks - 0
基本思路是向Display绘制图片,然后通过操作Image上的像素点来生成点阵字库。

这里以SWT为例,代码如下:
 1 GC gc = new GC(image);
 2 gc.setFont(font); // 设置字体,事先可以准备好一个字体实例
 3 gc.drawString(ch.toString(), 0, 0);
 4 
 5 
 6 for (int y = 0; y < size.y; y++) {
 7     for (int x = 0; x < size.x; x++) {
 8           int pixel = image.getImageData().getPixel(x, y);
 9           if (pixel != 0xffffff00) {
10 
11                // 这里对像素值的判断依赖于gc的前景色和背景色设置,通过判断则可以对字符上的每一个像素进行操作,生成点阵坐标序列(x, y)
12           }
13      }
14 }
15 
16 gc.dispose();
17 image.dispose();

当然这里可以一次性获得一个String的点阵矩阵,那么需要事先准备多大的image呢?

在SWT中可以使用gc.stringExtent(String...)来获取,代码如下:
1 GC gc = new GC(Display.getDefault()); 
2 gc.setFont(font);
3 Point size = gc.stringExtent(ch.toString()); // 获得了gc实际绘制区域的大小
4 gc.dispose();


无人分享的快乐不是真快乐,没人分担的痛苦是真痛苦。
posted on 2012-02-16 19:52 Feenn 阅读(2692) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: