国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

用TRUETYPE技術顯示漢字

2019-11-17 05:30:20
字體:
來源:轉載
供稿:網友

  我知道有一個FREETYPE庫可以把TRUETYPE字庫渲染成點陣字。但是請注重TRUETYPE技術中包含了多項Apple公司的技術專利(主要是解釋其HINT碼),目前FREETYPE項目負責人已經收到Apple公司的通知,要求其申請Apple的專利許可,目前正在談判之中。

想要避開專利問題,只好不用HINT,但是這樣一來顯示效果極差。

其實假如只是在Windows下(不管中文還是E文),只要先把中文轉換成UNICODE串(MultiByteToWideChar?),再用TextOutW函數輸出即可。
不管是95還是NT都支持這些函數,只要已經裝有相應的字體即可。沒有必要去自己解釋TRUETYPE。


灰衣老僧: 是嗎?專利問題有公司考慮!  
   問題是轉換為Unicode在英文下輸出我沒成功!  

以前是高手:  怎么能用CP_OEMCP呢?  
   當然要填936了。

要顯式地使用TextOutW(),不能用dc.TextOut(),因為程序還是按非UNICODE方式編譯的。

wchar_t wstr[500];
int n=MultiByteToWideChar(936, MB_PRECOMPOSED,
    str, -1, wstr, 500);
TextOutW(pDC->m_hDC, x, y, wstr);


系統必須裝有936代碼頁。怎么裝?把cp_936.nls(VC++中有的)COPY到windows/system下,再在注冊表

/HKEY_LOCAL_MACHINE/System/CurrentControlSet/control/Nls/Codepage中,加上936 = "cp_936.nls"

/HKEY_LOCAL_MACHINE_System/CurrentControlSet/control/Nls/Locale中,加上00000804 = "Chinese(PRC)"


灰衣老僧: 太棒了!成功了!等你回國,老僧一定請你喝酒!

Code:

    BOOL bResult = m_Font.CreateFont(-16,0,0,0,400,0,0,0,134,3,2,1,50,"SimSun");

    char *pText = "Test漢字顯示測試Test";
    wchar_t wBuffer[256];
    int nLength = MultiByteToWideChar(936, MB_PRECOMPOSED, pText, -1, wBuffer, 256);
    CDC *pDC = GetDC();
    CFont *pFontTemp = (CFont *)pDC->SelectObject(&m_Font);
    TextOutW(pDC->m_hDC, 80, 80, wBuffer, nLength - 1);
    pDC->SelectObject(pFontTemp);
    ReleaseDC(pDC);


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新乡市| 天气| 龙里县| 夹江县| 剑川县| 巴楚县| 双桥区| 永登县| 尼玛县| 土默特右旗| 宁海县| 临沭县| 乐亭县| 汶上县| 宾阳县| 平顶山市| 通渭县| 赣州市| 宁安市| 宁夏| 河北区| 鹤山市| 韶山市| 绥德县| 栖霞市| 张家界市| 锦州市| 南召县| 仁布县| 新平| 鄂托克旗| 罗山县| 龙江县| 汾阳市| 会泽县| 巩义市| 保康县| 邹城市| 新兴县| 凌云县| 阳东县|