GDI+:
//使用Gdiplus image
DWORD iStart=GetTickCount();
Gdiplus::Bitmap bmp(_T("G://和动力//选择界面效果序列图//DJSelectedOut//一号舞台.png"));
CPaintDC dc(this);
Gdiplus::Graphics gs(dc.m_hDC);
for (int i=0;i<100;i++)
{
gs.DrawImage(&bmp,0,0);
}
DWORD iEnd=GetTickCount();
TCHAR cc[30];
_stprintf(cc,_T("Bitmap:%d"),iEnd-iStart);
MessageBox(cc);
测试出费540上下;
CImage:
DWORD iStart=GetTickCount();
CImage img;img.Load(_T("G://和动力//选择界面效果序列图//DJSelectedOut//一号舞台.png"));
CPaintDC dc(this);
for (int i=0;i<100;i++)
{
img.Draw(dc.m_hDC ,0,0);
}
DWORD iEnd=GetTickCount();
TCHAR cc[30];
_stprintf(cc,_T("CImage:%d"),iEnd-iStart);
MessageBox(cc);
测试出:31,32。
将数量都增大到1000后,GDI+明显好几秒!而CImage几乎不变,再增大至10000,才达到103,104.
如此,GDI+绘图效率连CImage 1%都达不到!
//使用Gdiplus image
DWORD iStart=GetTickCount();
Gdiplus::Bitmap bmp(_T("G://和动力//选择界面效果序列图//DJSelectedOut//一号舞台.png"));
CPaintDC dc(this);
Gdiplus::Graphics gs(dc.m_hDC);
for (int i=0;i<100;i++)
{
gs.DrawImage(&bmp,0,0);
}
DWORD iEnd=GetTickCount();
TCHAR cc[30];
_stprintf(cc,_T("Bitmap:%d"),iEnd-iStart);
MessageBox(cc);
测试出费540上下;
CImage:
DWORD iStart=GetTickCount();
CImage img;img.Load(_T("G://和动力//选择界面效果序列图//DJSelectedOut//一号舞台.png"));
CPaintDC dc(this);
for (int i=0;i<100;i++)
{
img.Draw(dc.m_hDC ,0,0);
}
DWORD iEnd=GetTickCount();
TCHAR cc[30];
_stprintf(cc,_T("CImage:%d"),iEnd-iStart);
MessageBox(cc);
测试出:31,32。
将数量都增大到1000后,GDI+明显好几秒!而CImage几乎不变,再增大至10000,才达到103,104.
如此,GDI+绘图效率连CImage 1%都达不到!

本文通过对比GDI+和CImage在加载及绘制同一图片上的速度,发现CImage在大量重复绘制时表现远优于GDI+。在100次和10000次绘制测试中,GDI+的效率显著低于CImage,显示出CImage在绘图效率上的优势。
最低0.47元/天 解锁文章
1268

被折叠的 条评论
为什么被折叠?



