我是靠谱客的博主 微笑酒窝,最近开发中收集的这篇文章主要介绍结合CDIB类,对图像的打开、显示、保存,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

        需要先建一个显示类,这个显示类的基类我选的是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类,对图像的打开、显示、保存所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部