如何得到HBITMAP指向的位图的位数据的指针,在线等...(100分) 如何得到HBITMAP指向的位图的位数据的指针(100分)在线等... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 LONG GetBitmapBits( HBITMAP hbmp, // handle to bitmap LONG cbBuffer, // number of bytes to copy LPVOID lpvBits // pointer to buffer to receive bits); DWORD *bfSize,Size;//bmp文件大小BYTE *lpBits;//指向文件位数据指针lpBits = (BYTE*)HeapAlloc(GetProcessHeap(),0,20);//先想法得到文件大小,bmp文件开头的sizeof(UINT)处有一个DWORD类型的数据,存放文件大小,GetBitmapBits(hbm,20, lpBits);lpBits += sizeof(UINT);bfSize = (unsigned long *)lpBits;Size = *bfSize;HeapFree(GetProcessHeap(),0,lpBits);lpBits = (BYTE*)HeapAlloc(GetProcessHeap(),0,Size);GetBitmapBits(hbm,Size,lpBits); LPVOID GetData(HBITMAP hbp){ BITMAP bm ; GetObject(hbp,sizeof(BITMAP),&bm); return bm.bmBits ;} GetBitmapBits是把指定的数据copy过来吧。我需要的是修改数据就可反映到位图中。 (我也不是很清楚,但是:)对用::LoadImage (::AfxFindResourceHandle( MAKEINTRESOURCE (inBitmapID), RT_BITMAP), MAKEINTRESOURCE (inBitmapID), IMAGE_BITMAP, 0, 0, (LR_DEFAULTSIZE | LR_CREATEDIBSECTION));载入的24位色的位图,可以直接得到数据区// get a pointer to the pixelsDIBSECTION ds;VERIFY (ioBM.GetObject (sizeof (DIBSECTION), &ds) == sizeof (DIBSECTION));RGBTRIPLE* pixels = reinterpret_cast<RGBTRIPLE*>(ds.dsBm.bmBits); 只能把位图数据考备出来,要想得到HBITMAP的DIB指针是不可能的。只有DIBSECTION在你得到HBITMAP handle时,同时拥有其DIB的指针. CWND派生的类能不能串行化!对不起分不多了 带radiobutton 功能的CListCtrl类 ado问题 请问如何用VC实将EXCEL数据文件 转为 DBF 如何让程序完全响应键盘快捷键,包括F1?? 为什么我的TerminateProcess无法结束进程? 哪位好心人可以帮忙写个类似VB里的hex$()的函数? 学习的困惑 SetEvent干什么用 这个数据库该如何创建? 怎样得到位图中像素点的RGB,请给出源代码,谢谢! 怎样用ATL做一个ActiveX的容器?
LONG GetBitmapBits(
HBITMAP hbmp, // handle to bitmap
LONG cbBuffer, // number of bytes to copy
LPVOID lpvBits // pointer to buffer to receive bits
);
BYTE *lpBits;//指向文件位数据指针
lpBits = (BYTE*)HeapAlloc(GetProcessHeap(),0,20);//先想法得到文件大小,bmp文件开头的sizeof(UINT)处有一个DWORD类型的数据,存放文件大小,
GetBitmapBits(hbm,20, lpBits);
lpBits += sizeof(UINT);
bfSize = (unsigned long *)lpBits;
Size = *bfSize;
HeapFree(GetProcessHeap(),0,lpBits);
lpBits = (BYTE*)HeapAlloc(GetProcessHeap(),0,Size);
GetBitmapBits(hbm,Size,lpBits);
LPVOID GetData(HBITMAP hbp)
{
BITMAP bm ;
GetObject(hbp,sizeof(BITMAP),&bm);
return bm.bmBits ;
}
是把指定的数据copy过来吧。我需要的是修改数据就可反映到位图中。
MAKEINTRESOURCE (inBitmapID), RT_BITMAP),
MAKEINTRESOURCE (inBitmapID), IMAGE_BITMAP, 0, 0,
(LR_DEFAULTSIZE | LR_CREATEDIBSECTION));
载入的24位色的位图,可以直接得到数据区// get a pointer to the pixels
DIBSECTION ds;
VERIFY (ioBM.GetObject (sizeof (DIBSECTION), &ds) == sizeof (DIBSECTION));
RGBTRIPLE* pixels = reinterpret_cast<RGBTRIPLE*>(ds.dsBm.bmBits);
只有DIBSECTION在你得到HBITMAP handle时,同时拥有其DIB的指针.