TTF字型 獲取TTF字型的點陣資訊

2021-10-24 05:22:55 字數 1388 閱讀 6568

獲取ttf字型的點陣資訊還是使用getglyphoutline

看**

cclientdc dc(this);

hdc hdc = dc.getsafehdc();

//建立字型

cfont font;

verify(font.createfont(32, 0, 0, 0, fw_normal, false, false, 0, ansi_charset,

out_default_precis, clip_default_precis, default_quality, default_pitch | ff_swiss, "宋體"));

cfont *poldfont = dc.selectobject(&font);

// 定義並初始化變換矩陣

mat2 mat2;

memset(&mat2, 0, sizeof(mat2));

mat2.em11.value = 1;

mat2.em22.value = -1; // 我這裡寫-1, 字型會倒置, 結合bmp的格式

glyphmetrics metrics; // 儲存字元相關資訊

dword dwdatasize = 0; // 初始化字元資料緩衝區大小

//……

// 通過函式getglyphoutline()確定儲存字元結構的空間

wchar_t nchar = l'我';

::textout(dc.m_hdc, 0, 0, "我", 2);

dwdatasize = ::getglyphoutlinew(dc.m_hdc, (uint)nchar, ggo_bitmap, &metrics, 0, null, &mat2);

if ((dwdatasize != 0) && (dwdatasize != gdi_error))

點陣資料就是bmp格式的資料, 構建好bmp相關的資訊頭後即可顯示在dc或者儲存在bmp檔案中

ggo_bitmap 1位位圖

其他的你可以使用8位位圖儲存, 但注意顏色表的構建.

那些led顯示條, 乙個字有16*16點, 有32*32點 等等.

記得以前做過乙個程式, 輸入文字, 把該文字的轉成對應點陣格式. 對於16*16或者32*32的點陣屏, 使用ttf字型的資料提取並不是最好的. 因為提取出來的文字, 特別是中文, 點陣的範圍不是很固定(例如你設定字型高度是32, 但提取出來的點陣資訊並不一定是32*32的, 有些29, 有些31等等).

16*16或者32*32點陣屏可以找dos系統中的點陣檔案來提取. 如果大於32*32就可以考慮使用ttf來提取, 但是要做一些處理來對齊文字的顯示.

TTF字型 TTF字型結構

乙個ttf字元由許多輪廓組成,每乙個輪廓由乙個名叫ttpolygonheader的資料結構開始,跟在ttpolygonheader後面的是一系列的ttpolycurve資料結構體。輪廓的頂點是pointfx型別的資料結構點。ttpolygonheader的結構如下 typedef struct tt...

使用ttf字型

有時候我們需要在遊戲或應用中使用指定的字型,這些字型在每部手機中不一定要.我們可以將ttf檔案新增到應用中,專案的結構圖如下 圖中p5.ttf是我們新增的字型檔案.以下 是如何呼叫與使用字型的.本 是 rb打地鼠 的 片段.color 666666 public void ondraw canvas...

MiniGUI 使用TTF字型

向量字型的配置和使用如下 1 編譯配置 使minigui支援向量字型 2 minigui 編譯時,開啟configure相應的配置選項 enable ttfsupport 注 如果沒有安裝freetype1即使 使用了此選項,也會被預設關閉掉。3 將字型放在 usr local lib minigu...