gdi gdiplus如何載入字型

2021-07-02 16:40:18 字數 2016 閱讀 4922

對於gdi畫法:

雲風的部落格上這麼說(

以前做遊戲想用隸書,但是並非每台機器上都裝有這個字型,所以有時候需要給使用者提供乙個。在自己軟體的路徑下放上字型檔案,直接呼叫 createfont 這個 api 是不認的。

這種情況下可以使用 addfontresource ,然後呼叫

postmessage(hwnd_broadcast,wm_fontchange,0,0); 就可以了。

當不用這個字型時再呼叫 removefontresource 卸掉。

bool installfont(void)

; lf.lfcharset = gb2312_charset;

hwnd hdesktop = ::getdesktopwindow();

hdc hdc=::getdc(hdesktop);

enumfontfamilie***(hdc,&lf,(fontenumproc)enumfontproc,0,0);

::releasedc(hdesktop,hdc);

if (!g_bexistfont) //不存在字型 安裝字型

; const long lfontcount = arraysize(aryfontfilename);

cstring strwindowsfontspath = crngetspecialfolder(csidl_fonts);

tchar szsrcpath[max_path] = , szdscpath[max_path] = ;

for (long i = 0; i < lfontcount; ++i)

}} return true;

}

對於gdiplus:

使用privatefontcollection.addfontfile()方法載入字型,然後得到fontfamliy來建立gdi+ font

bool uiplusfont::loadfont(lpctstr lpszfontfilepath, lptstr lpszfontfamilyname, privatefontcollection& pfc)

delete pfontfamily;

pfontfamily = null;

if(_tcscmp(lpszfontfamilyname, zlt("微軟雅黑")) != 0)

return false;

else

return true;

}

uiplusfont::ref_type uiplusfont::create(long lsize,long lfontstyle,lpctstr lpname)

; coverttolocalfontname(logfont.lffacename,lpname);

fontfamily fontfamily(logfont.lffacename);

font* pfont = new font(&fontfamily,(gdiplus::real)lsize,lfontstyle,unitpixel);

if (pfont->getlaststatus()!=ok)

; privatefontcollection pfc;

tchar szfamilyname[32] = ;

loadfont(szfontfilepath, szfamilyname, pfc);

pfont = new font(szfamilyname,(gdiplus::real)lsize,lfontstyle,unitpixel, &pfc);

if(pfont->getlaststatus()!=ok)

}uiplusfont::ref_type preffont=uiplusfont::create(pfont);

g_uiplusfontcache.insert(std::pair(logfont,preffont));

return preffont;

}

如何高效載入bitmap

對於如何高效載入bitmap,就是採用bitmapfactory.options來載入所需的大小。通過bitmapfactory.options來對進行縮放,主要利用其insamplesize引數,即取樣率。獲取取樣率的步驟一般如下 1 將bitmapfactory.options的injustde...

AssetBundle的如何載入

assets apk assets streamingassets 這個資料夾 在 手機平台 一般是唯讀的,不可寫,安卓打包到上麥呢的資料夾 persisten 這個路徑,可讀可寫,程式第一次載入的時候會把 streamingassets 資料夾下面的東西寫入這裡 流程 1,先把打的包從硬碟load...

Linux如何載入U盤

linux如何載入u盤 一 初次使用redhat 8.6版本,在載入u盤的時候遇到以下情況 1.不知道虛擬機器上的linux作業系統有沒有識別到u盤 2.如何將u盤掛載到系統上 3.解決中文亂碼的問題 二 解決方法如下 1.先執行fdisk l命令,檢視當前系統裡的硬碟情況 2.將u盤插入,再執行f...