• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
代码的天空
博客园    首页    新随笔    联系   管理    订阅  订阅

通过IStream输出图像信息

////////////////////////

//参数假设

PBYTE pbImage 为指向图像的指针

int nSize 为图像大小

CWnd *pCWnd 为输出到界面的元素指针

/////////////////////////

IStream *pStream = NULL;

//创建IStream

if (FAILED(CreateStreamOnHGlobal(NULL, TRUE, &pStream)))
{
    return -1;
}

 

//把图像内容写入流对象

pStream->Write(pbImage, nSize, NULL);

 

//由于写入后IStream的数据读写位置从 0 移动到了 nSize ,如果要输出写入的内容,

//需要设置读写位置到相应的位置上,类似对文档的读写操作过程。这里的宏STREAM_SEEK_SET为0。

LARGE_INTEGER liTemp = { 0 };
pStream->Seek(liTemp, STREAM_SEEK_SET, NULL);

 

//用IStream创建一个Bitmap对象

Bitmap TempBmp(pStream);

 

//获取要输出的区域

Rect aRect;

pCWnd->GetClientRect((LPRECT)&aRect);

 

//使用GDI+的接口来输出图像

Graphics grf(pCWnd->GetSafeHwnd());

grf.DrawImage(&TempBmp, aRect);

 

//不要忘了释放IStream,因为是通过COM接口创建的IStream,需要使用对象的Release方法释放

pStream->Release();

posted @ 2009-10-27 10:55  黑翼  阅读(1340)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3