MFC中如何载入bmp和jpeg格式的图片,并作为文件背景?
要求有具体操作过程,不能只是代码
MFC中如何载入bmp和jpeg格式的图片,并作为文件背景?
要求有具体操作过程,不能只是代码
通过资源加载BMP位图的方法:
CDC m_MemDc;//定义一个DC CBitmap m_BkBmp;//定义个位图对象 BITMAP m_BmpInfo;//定义一个位图信息结构体 CDC *pDc = GetDC();//定义一个DC指针,并指向屏幕DC m_BkBmp.LoadBitmap(IDB_TEST1); m_BkBmp.GetBitmap(&m_BmpInfo);//获取位图高宽等信息,保存在位图结构体中 m_MemDc.CreateCompatibleDC(pDc);//创建一个兼容屏幕DC的内存DC:m_MemDc。 m_MemDc.SelectObject(&m_BkBmp);//将该位图选择到刚创建的内存DC中。 pDc->BitBlt(0,0,m_BmpInfo.bmWidth,m_BmpInfo.bmHeight,&m_MemDc,0,0,SRCCOPY); //这个贴图只贴一次,当你最小化后再还原,刚才的贴图就没了。
以下是通过文件加载BMP位图的方法
CDC m_bgDC;//定义一个DC CBitmap m_bgBmp;//定义个位图对象 BITMAP m_bgBmpInfo;//定义一个位图信息结构体 CRect m_CliRect;//定义一个矩形对象,用来保存窗口客户区大小 CDC *pDc = GetDC();//定义一个DC指针,并指向屏幕DC GetClientRect(&m_CliRect);//获取客户去大小,并保存到m_CliRect对象中 HBITMAP h_bgBmp = (HBITMAP)::LoadImage(NULL,"位图文件名.bmp",IMAGE_BITMAP,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE); if (h_bgBmp == NULL) { MessageBox("加载位图失败"); return; } m_bgBmp.Attach(h_bgBmp);//将读取到的位图数据保存到位图对象中 m_bgBmp.GetBitmap(&m_bgBmpInfo);//获取该位图的大小 m_bgDC.CreateCompatibleDC(pDc);//创建一个兼容于屏幕DC的内存DC m_bgDC.SelectObject(&m_bgBmp);//将该位图选入到刚刚创建的内存DC中。 pDc->StretchBlt(0,0,m_CliRect.Width(),m_CliRect.Height(),&m_bgDC,0,0,m_bgBmpInfo.bmWidth,m_bgBmpInfo.bmHeight,SRCCOPY); //如果想把该位图作为背景一直显示, //针对MFC写的基于对话框的程序, //那么只要在对话框的OnPaint();这个函数中执行StretchBlt或者bitblt //在OnInitDialog();这个函数中做以上的那些初始化,将变量作为对话框类的成员变量; //如此这般就可以在窗口上一直显示你选择的图片了。
//如果是基于文档的程序,方法类似, 总之思路就是:
//1 在窗口类中定义以上必须的变量(对象) //2 在窗口的初始化函数中 初始化以上这些变量(对象) //3 在窗口的刷新响应函数中将选择的位图贴图到窗口上
至于加载JPG的,貌似就需要专门的组建了,个人认为jpg那个可以理解为压缩了的位图。想要得到JPG图片中各个点的RGB信息比较麻烦点。