基本思路是向Display繪制圖片,然后通過操作Image上的像素點(diǎn)來生成點(diǎn)陣字庫。
這里以SWT為例,代碼如下:
1 GC gc = new GC(image);
2 gc.setFont(font); // 設(shè)置字體,事先可以準(zhǔn)備好一個(gè)字體實(shí)例
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 // 這里對(duì)像素值的判斷依賴于gc的前景色和背景色設(shè)置,通過判斷則可以對(duì)字符上的每一個(gè)像素進(jìn)行操作,生成點(diǎn)陣坐標(biāo)序列(x, y)
12 }
13 }
14 }
15
16 gc.dispose();
17 image.dispose();
當(dāng)然這里可以一次性獲得一個(gè)String的點(diǎn)陣矩陣,那么需要事先準(zhǔn)備多大的image呢?
在SWT中可以使用gc.stringExtent(String...)來獲取,代碼如下:
1 GC gc = new GC(Display.getDefault());
2 gc.setFont(font);
3 Point size = gc.stringExtent(ch.toString()); // 獲得了gc實(shí)際繪制區(qū)域的大小
4 gc.dispose();
無人分享的快樂不是真快樂,沒人分擔(dān)的痛苦是真痛苦。
posted on 2012-02-16 19:52
Feenn 閱讀(2749)
評(píng)論(0) 編輯 收藏