作者qazq (...)
看板C_and_CPP
标题[问题] DrawText 有无改变字体大小速度差了 100 倍....?!
时间Wed Apr 29 11:56:21 2009
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
1F:→ WPC001:这个 -40 改成 40效能会改善吗? 效能的loss是不是就在这里? 04/29 14:04
2F:→ qazq:一样耶 :( 04/29 14:39
3F:推 hichcock:改成这样呢 lf.lfHeight = lf.lfHeight 04/29 21:36
4F:→ hichcock:想先确认时间是耗在显示上还是.... 04/29 21:37
5F:→ sunneo:如果再不行 也许得看看有没有memory map的方式 04/30 00:34
6F:→ qazq:lf.lfHeight = lf.lfHeight 等於是用预设的,就超快 :( 04/30 09:31