獲取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...