怎么用visual c++从磁盘读取一幅bmp图像 新手入门了不到1个月 很迷茫 没思路啊 不太会 请高手指点!@! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.codeproject.com/KB/graphics/CPictureControl.aspx 请百度或google一下,很多说明和实例 HBITMAP hbitmap = (HBITMAP)::LoadImage(NULL,fileName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE); 有的例程是这样写的 HDIB WINAPI ReadDIBFile(CFile& file) { BITMAPFILEHEADER bmfHeader; DWORD dwBitsSize; HDIB hDIB; LPSTR pDIB; // 获取DIB(文件)长度(字节) dwBitsSize = file.GetLength(); // 尝试读取DIB文件头 if (file.Read((LPSTR)&bmfHeader, sizeof(bmfHeader)) != sizeof(bmfHeader)) { // 大小不对,返回NULL。 return NULL; } // 判断是否是DIB对象,检查头两个字节是否是 "BM " if (bmfHeader.bfType != DIB_HEADER_MARKER) { // 非DIB对象,返回NULL。 return NULL; } // 为DIB分配内存 hDIB = (HDIB) ::GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, dwBitsSize); if (hDIB == 0) { // 内存分配失败,返回NULL。 return NULL; } // 锁定 pDIB = (LPSTR) ::GlobalLock((HGLOBAL) hDIB); // 读象素 if (file.ReadHuge(pDIB, dwBitsSize - sizeof(BITMAPFILEHEADER)) != dwBitsSize - sizeof(BITMAPFILEHEADER) ) { // 大小不对。 // 解除锁定 ::GlobalUnlock((HGLOBAL) hDIB); // 释放内存 ::GlobalFree((HGLOBAL) hDIB); // 返回NULL。 return NULL; } // 解除锁定 ::GlobalUnlock((HGLOBAL) hDIB); // 返回DIB句柄 return hDIB; } HDIB 在MFC中没有这个类型啊 ,报错 怎么办 HBITMAP hbitmap = (HBITMAP)::LoadImage(NULL,fileName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);请问下 怎么使用这个方法 报这个函数没有6个参数的啊?什么原因 请指教! 函数原型是这个HANDLE LoadImage( HINSTANCE hinst, // handle to instance LPCTSTR lpszName, // image to load UINT uType, // image type int cxDesired, // desired width int cyDesired, // desired height UINT fuLoad // load options); ++++再加上对BMP结构的理解,不难看懂的。 用dib的话试试这样CFile file;file.open(XXXXXXX);hdib=ReadDIBFile(file); HANDLE handle = LoadImage(NULL,_T("electric.bmp"),IMAGE_BITMAP,0,0,LR_LOADFROMFILE); //检测波形段的数量,拼接波形段 m_Bmp.SetBitmap((HBITMAP)handle);m_Bmp 是图案控件。 还是直接用类库操作吧。比如 OpenCV、 CxImage 、CDib等。这样操作起来也方便。 编辑框不能 赋初值的问题 请问这样的如何添加调用存储过程的参数呢?这样对吗??? VC里如何去找键码的物理值?在线等待,谢谢 我想在当前活动视中拦截主框架发出的消息,该怎么办? 一个问题,请高手帮忙,没分了,给的少点 到底用不用COM? 求救,一个奇怪问题,关于函数CryptAcquireContext ※如何编写和windows操作系统密切相关的程序,比如控制面板、显示属性、网络设置等程序? 奇怪的CFileDialog问题 如何学习COM!!!大家来讨论讨论! 关于VC6中属性表单的帮助按钮 子对话框怎么获取其他同父对话框的子对话框的指针
HDIB WINAPI ReadDIBFile(CFile& file)
{
BITMAPFILEHEADER bmfHeader;
DWORD dwBitsSize;
HDIB hDIB;
LPSTR pDIB; // 获取DIB(文件)长度(字节)
dwBitsSize = file.GetLength(); // 尝试读取DIB文件头
if (file.Read((LPSTR)&bmfHeader, sizeof(bmfHeader)) != sizeof(bmfHeader))
{
// 大小不对,返回NULL。
return NULL;
} // 判断是否是DIB对象,检查头两个字节是否是 "BM "
if (bmfHeader.bfType != DIB_HEADER_MARKER)
{
// 非DIB对象,返回NULL。
return NULL;
} // 为DIB分配内存
hDIB = (HDIB) ::GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, dwBitsSize);
if (hDIB == 0)
{
// 内存分配失败,返回NULL。
return NULL;
} // 锁定
pDIB = (LPSTR) ::GlobalLock((HGLOBAL) hDIB); // 读象素
if (file.ReadHuge(pDIB, dwBitsSize - sizeof(BITMAPFILEHEADER)) !=
dwBitsSize - sizeof(BITMAPFILEHEADER) )
{
// 大小不对。 // 解除锁定
::GlobalUnlock((HGLOBAL) hDIB); // 释放内存
::GlobalFree((HGLOBAL) hDIB); // 返回NULL。
return NULL;
} // 解除锁定
::GlobalUnlock((HGLOBAL) hDIB); // 返回DIB句柄
return hDIB;
}
HDIB 在MFC中没有这个类型啊 ,报错 怎么办
HANDLE LoadImage(
HINSTANCE hinst, // handle to instance
LPCTSTR lpszName, // image to load
UINT uType, // image type
int cxDesired, // desired width
int cyDesired, // desired height
UINT fuLoad // load options
);
CFile file;
file.open(XXXXXXX);
hdib=ReadDIBFile(file);
HANDLE handle = LoadImage(NULL,_T("electric.bmp"),IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
//检测波形段的数量,拼接波形段
m_Bmp.SetBitmap((HBITMAP)handle);
m_Bmp 是图案控件。
比如 OpenCV、 CxImage 、CDib等。这样操作起来也方便。