高分 请高人解答 通过 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 是将位图中的数据复制到一个缓冲区,
如果我就是连这一步,也要省去,就是想直接获取指向一个位图中数据的指针,直接处理其中的数据,
难道真没有办法,实现不了吗?
如何通过 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;