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);

解决方案 »

  1.   

    用CImage试试。
    先 image.Load(lpvBuf);然后image.Draw(MemDC.GetDC(),...);
      

  2.   


    已解码好的lpvBuf如何构建HBITMAP呢?效率不会低么?
      

  3.   

    空间换时间.
    用CreateDIBitmap将DIB预先转化为一个DDB.
    以后用DDB来更新界面.如果你的DIB是频繁变化的,那就没办法了.
      

  4.   

    同意8楼。
    如果你只是显示局部,可以考虑从SetDIBitsToDevice函数的int XSrc, int Ysrc, UINT uStartScan, UINT cScanLines这几个参数入手。