假设现在位图已经被存入内存,数据都有,怎么将位图数据组成一个HANDLE传给其他人调用?

yoogle 2007-11-23 05:16:51
rt.急!
...全文
70 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
SenerityChzr 2007-11-23
  • 打赏
  • 举报
回复
知道位图在内存的大小,再把指针传给其他人就可以了。
mynamelj 2007-11-23
  • 打赏
  • 举报
回复
第一种方法就是使用MetaFiles,关于MetaFiles可以查阅MSDN.
第二种方就是画在内存DC,反回一个HBITMAP句柄给其它人用.

//---------------------------------------------------
// Function : CopyBitmap
// Description : Copy a block bitmap from the source
// bitmap Specifies location
//
// 2007-11-09 LiJun crated.
//---------------------------------------------------
HBITMAP WINAPI
CopyBitmap(
IN HBITMAP hSrcBmp,
IN int nWidth,
IN int nHeight,
IN int xSrc,
IN int ySrc
)
{
HDC hDC, hMemDC, hSrcDC;
HBITMAP hNew, hOldBmp, hOldSrc;

if( hSrcBmp == NULL )
return NULL;

hDC = GetDC(NULL);
if( hDC == NULL )
return NULL;


hSrcDC = CreateCompatibleDC(hDC);
hMemDC = CreateCompatibleDC(hDC);

hNew = CreateCompatibleBitmap(hDC, nWidth, nHeight);

hOldSrc = (HBITMAP)SelectObject(hSrcDC, hSrcBmp);
hOldBmp = (HBITMAP)SelectObject(hMemDC, hNew);

BitBlt(hMemDC, 0, 0, nWidth, nHeight, hSrcDC, xSrc, ySrc, SRCCOPY);

SelectObject(hSrcDC, hOldSrc);
SelectObject(hMemDC, hOldBmp);

DeleteDC(hSrcDC);
DeleteDC(hMemDC);
ReleaseDC(NULL, hDC);

return hNew;
}

凤矶 2007-11-23
  • 打赏
  • 举报
回复
没有HBITMAP,那位图怎么放到内存的?~_~!
CreateBitmap(300, 200, 1, 32, pbits);
superdiablo 2007-11-23
  • 打赏
  • 举报
回复
其他人代表什么?其他线程,进程还是网络上另外一台电脑?
如果是其他线程直接把位图在内存中的指针传递过去;如果是进程把它存在一个位图文件中让别人读或者创建内存映射文件进行共享;如果其他计算机用网络传输。
BBirdlyh 2007-11-23
  • 打赏
  • 举报
回复
位图数据就是一个二进制文件,直接当成BYTE数组,准备足够的BUFFER传就可以了
醉马不肖 2007-11-23
  • 打赏
  • 举报
回复
变成一个文件,然后别人在读这个文件就可以了

19,468

社区成员

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

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