C++,我用malloc开辟了内存区域然后把一个BMP文件写进了这个区域,用WINAPI如何把这个内存中的BMP读出来

这个是loadimage读取硬盘BMP的方法,测试成功,能不能用来读内存中的BMP谢谢HANDLEh;HDChdc,dc;BITMAPbmp;h=LoadImage(NU... 这个是loadimage读取硬盘BMP的方法,测试成功,能不能用来读内存中的BMP 谢谢

HANDLE h;
HDC hdc,dc;
BITMAP bmp;
h=LoadImage(NULL,"C:\\1231.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);//打开图片C:\a.bmp并得到句柄
GetObject((HGDIOBJ)h, sizeof(BITMAP), &bmp);//得到图片的宽,高等信息,储存在bmp对象
hdc=GetDC(hwnd);//得到窗口的DC(hWnd是窗口句柄)
dc=CreateCompatibleDC(hdc);//得到与窗口DC兼容的DC
SelectObject(dc,h);//把得到的DC与图片句柄关联起来
BitBlt(hdc,0,0,bmp.bmWidth,bmp.bmHeight,dc,0,0,SRCCOPY);//把图片画在窗体上
DeleteDC(dc);//删除CreateCompatibleDC得到的图片DC
ReleaseDC(hwnd,hdc);//释放GetDC得到的DC
DeleteObject(h);//删除内存中的位图
展开
 我来答
金色潜鸟
2013-08-02 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5997万
展开全部
内存中的BMP 就是 BITMAP 对象 bmp。图像信息和点阵像素值 全在 bmp 中了。
对照BITMAP结构定义,要取什么值就取什么成员。
typedef struct tagBITMAP { /* bm */
int bmType;
int bmWidth;
int bmHeight;
int bmWidthBytes;
BYTE bmPlanes;
BYTE bmBitsPixel;
LPVOID bmBits;
} BITMAP;
更多追问追答
追问
有没有完整程序我看看
追答
接你上面的 BITMAP bmp;
bmp.bmWidth -- 点阵宽度
bmp.bmHeight -- 点阵高度
bmp.bmWidthBytes -- 点阵宽度字节个数
bmp.bmBitsPixel -- 一个像素用几个子元
bmp.bmBits -- 全部像素数值存放区域(可以理解为数组)首地址。
有了这些,你应当可以自己处理了。
Hiei1234
2013-08-02 · TA获得超过157个赞
知道小有建树答主
回答量:221
采纳率:0%
帮助的人:130万
展开全部
使用 CreateBitmap(宽, 高, 调色板, 位数, 像素);
追问
有没有完整程序我看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式