[問題] DrawText 有無改變字體大小速度差了 100 倍....?!

看板C_and_CPP (C/C++)作者 (...)時間16年前 (2009/04/29 11:56), 編輯推噓1(105)
留言6則, 4人參與, 最新討論串1/1
WinCE 上使用 DrawText 如果有改變字體大小的話就會相當相當的慢?! 中文字的話更是明顯。 WCHAR szBuf[1024] = L"一段很長的中文....."; RECT rc = {0,0,480,500}; DWORD s = GetTickCount(); DrawText(hdc, szBuf, wcslen(szBuf), DT_WORDBREAK); DWORD e = GetTickCount(); wprintf(L"time = %f\r\n", (e-s)/1000.0f); =================== 這樣平均輸出為 0.004 秒 如果改成.... HFONT font = (HFONT)GetStockObject(SYSTEM_FONT); LOGFONT lf; GetObject(font, sizeof(LOGFONT), &lf); lf.lfHeight = -40; HFONT bold_font = CreateFontIndirect(&lf); HFONT old_font = (HFONT)SelectObject(hdc, bold_font); DWORD s = GetTickCount(); DrawText(hdc, szBuf, wcslen(szBuf), DT_WORDBREAK); DWORD e = GetTickCount(); wprintf(L"time = %f\r\n", (e-s)/1000.0f); 輸出就會變成 0.6 秒左右,差了 100 倍 .....||| (我的裝置解析度為 480 * 800) 感覺和字型的快取有關係?但是使用 WinMobile 裡面的 Word 就算字體很大,速度也還OK。 不知道有什麼方法可以解決這個問題呢?謝謝大家! -- 超好用豬頭記帳!! 下載:http://qazq.pixnet.net/blog/post/21654150 程式截圖:http://140.120.13.13/~qazq/PigHeadMoney/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.21.127.208 qazq:轉錄至看板 Programming 04/29 11:56

04/29 14:04, , 1F
這個 -40 改成 40效能會改善嗎? 效能的loss是不是就在這裡?
04/29 14:04, 1F

04/29 14:39, , 2F
一樣耶 :(
04/29 14:39, 2F

04/29 21:36, , 3F
改成這樣呢 lf.lfHeight = lf.lfHeight
04/29 21:36, 3F

04/29 21:37, , 4F
想先確認時間是耗在顯示上還是....
04/29 21:37, 4F

04/30 00:34, , 5F
如果再不行 也許得看看有沒有memory map的方式
04/30 00:34, 5F

04/30 09:31, , 6F
lf.lfHeight = lf.lfHeight 等於是用預設的,就超快 :(
04/30 09:31, 6F
文章代碼(AID): #19zy_gaR (C_and_CPP)
文章代碼(AID): #19zy_gaR (C_and_CPP)