Duilib中將GDI換成GDI

2021-07-26 11:57:26 字數 1316 閱讀 7347

step1:在uirend.cpp的檔案頭加入下面**,目的是包含gdi+的標頭檔案和庫,以及定義提取的路徑變數imagepath:

step2:在函式bool crenderengine::drawimage(hdc hdc, cpaintmanagerui* pmanager,

const rect& rcitem, const rect& rcpaint,tdrawinfo& drawinfo)中加入以下**。得到的路徑。

imagepath = drawinfo.sdrawstring;

imagepath.erase(0, 7);

imagepath.erase(imagepath.end()-2, imagepath.end());

std::string tempstr = pmanager->getinstancepath();

imagepath = tempstr + imagepath;

step3:在函式void crenderengine::drawimage(hdc hdc, hbitmap hbitmap, 

const rect& rc, const rect& rcpaint,

const rect& rcbmppart, const rect& rcscale9, 

bool balpha,

byte ufade, bool bhole, bool btiledx, bool btiledy)的if (lpalphablend && (balpha || ufade < 255))花括號內,替換第乙個

lpalphablend函式,將其改為:

graphics graphics(hdc);

std::wstring widstr = std::wstring(imagepath.begin(), imagepath.end());

const wchar_t *pwidstr = widstr.c_str();

image tempimage(pwidstr);

graphics.drawimage(&tempimage, rcdest.left, rcdest.top, 

32, //測試時所用的矩形畫圖區域寬度

32);//測試時所用的矩形畫圖區域高度

或者使用cimage:

cimage cimage;

hresult hresult = cimage.load(imagepath.c_str());

bool issuccess = cimage.alphablend(hdc,rcdest.left + 100,rcdest.top + 100);

目前只是初步測試工程,還要進一步完善。

C 下實現雙緩衝描畫高頻曲線 GDI 結合GDI

由於專案需要,要使用c 描畫高頻實時曲線.但是在c 下由於描畫影象使用的是gdi 描畫效率很有問題.一旦曲線太多,就會造成cpu使用率直線上公升,馬上飆公升到100 在gdi 下使用雙緩衝也無濟於事,雙緩衝本身只會解決曲線多的時候全屏閃爍問題,但描畫效率還是嚴重低下.其間用過多種解決方案 drect...

vim中將tab自動轉換成空格

在vim中,有時需要將tab轉換成space。使用ret命令 replace tab range ret ab new tabstop 舉例 將第一行到檔案尾的tab轉換成space,每個tab用4個space替代。set expandtab ret 4 如果沒有給定4,則用當前的tab寬度設定替換...

MATLAB中將數字轉換成羅馬數字

通常我們所接觸到的10 1010 進製 2 22進製計數法都歸屬於按位計數法,通常來說,n nn進製計數法的特徵有 使用的數字有0,1 n 1 0,1,n 1 0,1,n 1,共n nn種 從右往左分別為n0位 n1位 n2位 n 0位,n 1位,n 2位 n0位,n1 位,n2 位 比如,對於n ...