
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);//删除内存中的位图 展开
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);//删除内存中的位图 展开
2个回答
展开全部
内存中的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结构定义,要取什么值就取什么成员。
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 -- 全部像素数值存放区域(可以理解为数组)首地址。
有了这些,你应当可以自己处理了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询