概述
需要先建一个显示类,这个显示类的基类我选的是CStatic,以下代码均放在这个显示类中,另外需在这个类的.h文件中添加CDib m_CDib;
另外,CDIB类文件需要自己添加。
1、图像的打开:
void CStaticImage::ImageOpen()
{
CString pathName; //文件路径
CString fileName; //文件名
//定义一个文件对话框,并设置属性
CFileDialog Dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_FILEMUSTEXIST,
NULL, NULL);
if(Dlg.DoModal() == IDOK)
{
pathName = Dlg.GetPathName();
fileName = Dlg.GetFileTitle();
SetWindowText(fileName);
}
CFile file;
CFileException e;
if(file.Open(pathName, CFile::modeRead,&e))
{
m_Dib.Read(&file);
file.Close();
RedrawWindow();
}
}
2、图像的显示:
图像的显示:
void CStaticImage::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
CRect rect;
GetClientRect(&rect); //获取客户区大小
CPoint point;
CSize size;
size = rect.Size();
point = rect.TopLeft();
m_Dib.Draw(&dc, point, size);
}
(这个OnPaint函数是消息处理函数,添加即可)
3、图像的保存:
void CStaticImage::ImageSave()
{
CString pathName;
CString fileName;
CString strFilter = _T(".bmp");
CFileDialog Dlg(FALSE, "*.bmp", _T("path.bmp"), OFN_OVERWRITEPROMPT |OFN_CREATEPROMPT , strFilter);
if(Dlg.DoModal() == IDOK)
{
CFile file;
CFileException e;
pathName = Dlg.GetPathName();
if(file.Open(pathName, CFile::modeCreate | CFile::modeReadWrite | CFile::shareExclusive
| CFile::shareDenyWrite | CFile::modeNoTruncate, &e))
{
m_Dib.Write(&file);
file.Close();
}
}
}
最后
以上就是微笑酒窝为你收集整理的结合CDIB类,对图像的打开、显示、保存的全部内容,希望文章能够帮你解决结合CDIB类,对图像的打开、显示、保存所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复