CPicture类的使用方法
2015-09-15 14:13
288 查看
一个使用该类来实现的简单的图片浏览程序(MFC程序)我们需要添加和修改的地方加起来不超过5行,但是功能相对(5行代码)来说已经是"太强大"了,它可以浏览包括BMP,JPEG,GIF,ICON,TIF等格式在内的好多种图像了。
1) 生成一个多文档的MFC应用程序,选择视图的基类为CScrollView. 其它使用默认值
2) 将CPicture类有头文件及源文件加入至工程中.
3) 在文档类的头文件前包含Picture.h头文件
4) 为文档类增加一个公有变量pic,类型CPicture.
5) 重载文档类的OnOpenDocument虚函数如下:
BOOL CBrowserDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
return pic.LoadPictureFromFile(lpszPathName);
}
6) 在视图类的OnInitUpdaye函数中修改SetScrollSizes的调用处代码:
void CBrewserView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
SetScrollSizes(MM_TEXT, GetDocument()->pic.GetSize());
}
7) 在视图类的OnDraw中增加绘图代码:
void CBrewserView::OnDraw(CDC* pDC)
{
CBrewserDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CSize sz = pDoc->pic.GetSize();
pDoc->pic.Draw(pDC, 0,0,sz.cx,sz.cy,0,0,sz.cx,sz.cy);
}
8) 好了,一个简单的图像浏览器就写好了.编译一下你的程序,然后试着打开一些图像文件.怎么样,呵呵,当然它不支持GIF动画.GIF动画文件只能显示一帧.但是对这么小的一个类来说. 已经难能可贵了.是吧.
1) 生成一个多文档的MFC应用程序,选择视图的基类为CScrollView. 其它使用默认值
2) 将CPicture类有头文件及源文件加入至工程中.
3) 在文档类的头文件前包含Picture.h头文件
4) 为文档类增加一个公有变量pic,类型CPicture.
5) 重载文档类的OnOpenDocument虚函数如下:
BOOL CBrowserDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
return pic.LoadPictureFromFile(lpszPathName);
}
6) 在视图类的OnInitUpdaye函数中修改SetScrollSizes的调用处代码:
void CBrewserView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
SetScrollSizes(MM_TEXT, GetDocument()->pic.GetSize());
}
7) 在视图类的OnDraw中增加绘图代码:
void CBrewserView::OnDraw(CDC* pDC)
{
CBrewserDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CSize sz = pDoc->pic.GetSize();
pDoc->pic.Draw(pDC, 0,0,sz.cx,sz.cy,0,0,sz.cx,sz.cy);
}
8) 好了,一个简单的图像浏览器就写好了.编译一下你的程序,然后试着打开一些图像文件.怎么样,呵呵,当然它不支持GIF动画.GIF动画文件只能显示一帧.但是对这么小的一个类来说. 已经难能可贵了.是吧.
相关文章推荐
- 程序调试VC++ 6.0
- 并发编程实践 -- 笔记
- GS1已分配给国家(地区)编码组织的前缀码
- [转]SpringMVC使用@ResponseBody时返回json的日期格式、@DatetimeFormat使用注意
- 分表保持id自增方式
- 如何优雅的写代码——使用RecyleView的基类Adapter
- loadrunner icrosoft Visual c++2005 sp1运行时组件,就会提示命令行选项语法错误,键入“命令/?”
- 进程、线程、任务
- 队列——阵列实现
- rpm软件包管理
- 浏览器什么时候会引起reflow,应该怎样避免reflow的开销呢?
- mongodb数据备份与恢复
- Android开发—解决自定义GridView高度第一个item高度异常问题
- Eclipse打jar包,资源文件的读取
- Eclipse打jar包,资源文件的读取
- Windows service中的Timer控件
- mysql索引之唯一索引
- Form表单提交前进行JS验证的3种方式
- oracle存贮过程示例
- FFmpeg 批处理脚本