高分 请高人解答 通过 hdc 获取 DIB 对象的数据指针

来源:百度知道 编辑:UC知道 时间:2024/05/15 03:20:20
现在有一个设备描述句柄 hdc

如何通过 hdc 直接获取 DIB 对象的数据指针,而不必将其复制出来,
就可以直接读写,API 中有没有提供这样的函数?

应该是有,如果没有 BitBlt 如何能完成功能?

请高人解答, 不胜感激!!!
正如一楼所说
CreateDIBSection 生成的 DIB 对象 可以 返回指向数据区首地址的指针

现在 如果 想 处理 hdc 关联的位图,就是 用 CreateDIBSection 生成 DIB,
通过 BitBlt 将位图复制到生成的 DIB 中处理完成后再用 BitBlt 复制回去

我是问 能不能直接 获取 hdc 关联的位图的数据地址,直接处理位图中的数据,
而不必 通过 CreateDIBSection 这一中间步骤。

谢谢楼下的回答。

GetDIBits 是将位图中的数据复制到一个缓冲区,
如果我就是连这一步,也要省去,就是想直接获取指向一个位图中数据的指针,直接处理其中的数据,
难道真没有办法,实现不了吗?

不是很清楚你是实现什么功能,一般来说,用CreateDIBSection即可,调用成功后就可以直接往缓冲区写数据了
==================
哦哦~~~大概GetDIBits就是你需要的了(这个还不够方便)~~有HBITMAP句柄的话就可以直接GetBitmapBits返回它的数据了
==================
直接处理的话……不太清楚,貌似没有?
只剩下GetBitmapBits了~~不过它一样需要一个外界的空间来存放数据,修改好后用SetBitmapBits写进去
==================
你试试用GetObject行不行~
HBITMAP hBmp;
BITMAP bmp;
GetObject(hBmp, sizeof(BITMAP), (LPSTR)&bmp);
我没空测试……偶尔看到这个结构罢了
typedef struct tagBITMAP {
LONG bmType;
LONG bmWidth;
LONG bmHeight;
LONG bmWidthBytes;
WORD bmPlanes;
WORD bmBitsPixel;
LPVOID bmBits;
} BITMAP, *PBITMAP;