将数据写入HDC的高效方法?

yf882 2011-09-03 10:44:49
SetDIBitsToDevice效率有点低,我在6410的开发板上(wince)执行这个函数需要接近100毫秒(图片800*480)。

要实现的功能是将已经解码好的16位BMP数据写入HDC,除了SetDIBitsToDevice还有其他方法吗?

已实现的代码,运行正常:

//解码
...

//保存到缓存
SetDIBitsToDevice(MemDC.GetDC(), 0, 0, 799, 479, 0, 0, 0, 479, (lpvBuf+54), &bmpinfo, DIB_RGB_COLORS);

//显示
BitBlt(hdc, 0, 0, 799, 479,MemDC.GetDC(),0,0,SRCCOPY);

...全文
135 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hastings 2011-09-04
  • 打赏
  • 举报
回复
同意8楼。
如果你只是显示局部,可以考虑从SetDIBitsToDevice函数的int XSrc, int Ysrc, UINT uStartScan, UINT cScanLines这几个参数入手。
woshi_ziyu 2011-09-03
  • 打赏
  • 举报
回复
帮顶
yf882 2011-09-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 worldy 的回复:]
那使用SetDIBits呢?
[/Quote]

wince不支持
yf882 2011-09-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xiaoc1026 的回复:]
用CImage试试。
先 image.Load(lpvBuf);

然后image.Draw(MemDC.GetDC(),...);
[/Quote]

wince不能用CImage
yf882 2011-09-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hnzlk 的回复:]
SelectObject呢
[/Quote]

已解码好的lpvBuf如何构建HBITMAP呢?效率不会低么?
worldy 2011-09-03
  • 打赏
  • 举报
回复
[Quote=引用楼主 yf882 的回复:]
SetDIBitsToDevice效率有点低,我在6410的开发板上(wince)执行这个函数需要接近100毫秒(图片800*480)。

要实现的功能是将已经解码好的16位BMP数据写入HDC,除了SetDIBitsToDevice还有其他方法吗?

已实现的代码,运行正常:

C/C++ code

//解码
...

//保存到缓存
S……
[/Quote]

那使用SetDIBits呢?
见习学术士 2011-09-03
  • 打赏
  • 举报
回复
用CImage试试。
先 image.Load(lpvBuf);

然后image.Draw(MemDC.GetDC(),...);
hnzlk 2011-09-03
  • 打赏
  • 举报
回复
SelectObject呢
ColdMooon 2011-09-03
  • 打赏
  • 举报
回复
空间换时间.
用CreateDIBitmap将DIB预先转化为一个DDB.
以后用DDB来更新界面.

如果你的DIB是频繁变化的,那就没办法了.
laviewpbt 2011-09-03
  • 打赏
  • 举报
回复
无法在加速了。

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧