第二章 MFC 绘图基础
更新时间:2024-01-01 11:24:01 阅读量: 教育文库 文档下载
- 第二章大圣归来小说推荐度:
- 相关推荐
本章学习目标
?
???
??
MFC上机操作步骤MFC绘图方法
CDC类的主要绘图成员函数设备上下文的调用和释放双缓冲机制
MFC绘制图形的几种方法
本章内容
2.1 MFC上机操作步骤
2.2 MFC2.3 2.4 2.5 MFC2.6 绘图方法
设备上下文的调用与释放
双缓冲机制绘图的几种方法
本章小结
2.1 MFC上机操作步骤
微软基类库MFC(microsoft foundation class
library,MFC)是以C++形式封装的Windows API(Application Program Interface),包含了200多个已经定义好的常用基类。在程序设计过程中,一般是通过MFC调用基类的成员函数来完成设计任务的。
6. 在应用程序框架的ClassView标签页中显示所创建的类和成员函数;在ResourceView标签页板中显示所创建的资源;在FileView标签页中显示源程序文件。如图2-6所示。
图2-6 应用程序框架的三个标签页显示
标签页:
从ClassView标签页可以看出,CTestApp是应用的主函数类,用来处理消息。MFC中的数据是存储在
CTestDoc类文档中,而结果却显示在CTestView类中,即显示在CMainFram类的客户区中。MFC中的文档/视图结构用来将程序的数据本身和数据显示相互隔离,文档类负责管理和维护数据本身,视图类负责处理用户鼠标和键盘的操作。
全部展开FileView标签页后,显示如图2-7所示的内容。本书后续的编程过程中一般使用的是CTestView类的TestView.h头文件和TestView.cpp源文件。
图2-7 FileView标签页的展开显示
在CTestView类的源文件TestView.cpp中可以找到OnDraw()函数。其内容如下:
void CTestView::OnDraw(CDC* pDC){
CTestDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);
// TODO: add draw code for native data here}
?pDC定义为CDC类的指针。
?pDoc通过GetDocument()函数得到指向文档类CTestDoc的指针。
ASSERT_VALID(pDoc)函数使pDoc指针有效。
?使用pDC指针,可以对CDC类的成员函数进行操作。
?OnDraw()函数由系统框架直接调用,程序一运行就会自动执行。
7. 点击工具条上的按钮(如图2-8所示),就可以直接编译、运行程序。Test工程运行结果如图2-9所示。
图2-8 执行按钮图2-9 Test工程运行效果图
尽管未编写一句代码,但Test程序已经形成一个可执行程序框架。
2.2 MFC绘图方法
?MFC运算功能强大,拥有完备的绘图功能。?在Windows平台上,应用程序的图形设备接口(
graphics device interface,GDI)被抽象为设备上下文(Device Context,DC)。
?在微软基类库MFC中,CDC类是定义设备上下文对象的基类,所有绘图函数都在CDC基类中定义。当需要输出文字或图形时,就需要调用CDC类的成员函数,这些成员函数具备输出文本、绘制图形的功能。
?本节讲解的例程全部在TestView.cpp文件的void CTestView::OnDraw(CDC* pDC)函数中实现。
2.2.1 CDC类结构和GDI对象
1.CDC类
CDC类派生了CClientDC类、CMetaFileDC类、
CPaintDC类和CWindowDC类。如图2-10所示。
图2-10 CDC类
CClientDC类:
显示器客户区设备上下文类。
?CClientDC只能在窗口的客户区进行绘图。
(不包括边框、标题栏、菜单栏及状态栏的空白区域)?点(0,0)是客户区的左上角。
?构造函数自动调用GetDC()函数,析构函数自动调用
ReleaseDC()函数。
CMetaFileDC类:
Windows图元文件设备上下文类。
?CMetaFileDC封装了在Windows中绘制图元文件的方法。?图元文件是微软定义的一种Windows平台下的与设备无关的的图形文件格式(扩展名为wmf),其所占的磁盘空间比其它任何格式的图形文件都要小得多。?wmf格式文件通常用于存储一系列由绘图命令所描述的图形(如绘制直线与文本等)。
?在建立图元文件时,不能实现即绘即得,而是先将GDI调用记录在图元文件中,然后在GDI环境中重新执行图元文件,才可显示图像。
4.删除GDI对象
类属:CGdiObject::DeleteObject原型:
BOOL DeleteObject();
返回值:如成功删除GDI对象,返回“非0”;否则,返回“0”。参数:无。
5.选入库对象
类属:CDC::SelectStockObject原型:
virtual CGdiObject *SelectStockObject(int nIndex);返回值:如果调用成功,返回被替代的CGdiObject类对象的指针;否则返回NULL。
参数:参数nIndex可以是表2-4给出的库画笔代码或表2-5给出的库画刷代码。
表2-3 常用的阴影线样式
阴影样式HS_BDIAGONAL
含义
45°上升阴影线(从左到右)
阴影样式HS_FDIAGONAL
含义
45°下降阴影线(从左到右)
水平阴影线垂直阴影线
HS_CROSS
水平与垂直交叉阴影线
HS_DIAGCROSS45°十字交叉阴
影线
HS_HORIZONTALHS_VERTICAL
表2-4 3种常用库笔
库画笔代码BLACK_PENNULL_PENWHITE_PEN
含义
宽度为1个像素的黑色实线画笔透明画笔
宽度为1个像素的白色实线画笔
表2-5 7种常用库画刷
库画刷代码BLACK_BRUSH
含义
黑色的实心画刷
对应的RGBRGB(0,0,0)
DKGRAY_BRUSHGRAY_BRUSHHOLLOW_BRUSHLTGRAY_BRUSHNULL_BRUSHWHITE_BRUSH
暗灰色的实心画刷灰色的实心画刷空心画刷
淡灰色的实心画刷透明画刷白色的实心画刷
RGB(64,64,64)RGB(128,128,128)
RGB(192,192,192)
RGB(255,255,255)
2.2.4 CDC类绘图成员函数
1.绘制像素点函数
类属:CDC::SetPixel 和CDC::SetPixelV原型:
COLORREF SetPixel(int x,int y,COLORREF crColor );BOOL SetPixelV(int x, int y, COLORREF crColor);返回值:SetPixel()函数如果调用成功,返回所绘制像素点的RGB值;否则,返回-1。SetPixelV()函数如果调用成功,返回“非0”;否则,返回“0”。
参数:x是像素点位置的x逻辑坐标;y是像素点位置的y逻辑坐标;crColor是像素点颜色。
说明:SetPixelV()函数不需要返回所绘制像素点的RGB值,执行速度比SetPixel()快得多。推荐使用SetPixelV()函数绘制像素点。
2.获取像素点颜色函数
类属:CDC::GetPixel原型:
COLORREF GetPixel(int x,int y)const;返回值:指定像素的RGB值。
参数说明:得到指定像素的RGB颜色值。本函数是常成员函数。
例2-6在屏幕的P0(20,20)坐标位置处绘制一个绿色像素点,然后读出该像素点的颜色,水平平移100个像素绘制P1点。效果如图2-13所示。
正在阅读:
第二章 MFC 绘图基础01-01
英语导学案的使用12-30
孟子选读(4)08-29
2020年乡村旅游发展新方向解析04-27
项目论证与评估 - 201606 - 模拟卷2 - 答案09-17
心烦气躁吃什么02-13
2017年电大专科《学前儿童语言教育》考试复习试题及答案03-03
扬州LED产业情况概览10-28
周练205-02
S版五年级上册语文第二单元教学设计04-22
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 绘图
- 第二章
- 基础
- MFC
- 一次风机送风机绿色施工、节能减排的管理措施和实施记录
- 当前农家书屋建设存在的突出问题与对策建议
- “背景故事”在技校语文教学中的作用
- 全体员工大会的通知1
- 2017-2022年中国电动汽车充换电站市场竞争态势及十三五投资价值评估报告(目录)
- 谈小学数学探究性学习的策略
- C语言编写源程序建立LR(1)分析器 - 图文
- 公司产品要求评审表(格式)
- 关于“科学执政、干事创业、团结和谐、清正廉洁”好班子创建活动的自查报告
- 数字式电子汽车衡技术协议-合同
- 软件系统测试报告(通用模板)
- 焓湿图
- 认识实习日记
- 内乡县计划生育协会志
- 防雷及接地安装工程技术交底记录 - 图文
- 2015高考英语考前知识复习05
- 新产品试产作业流程
- 公司股份制改造总体方案三篇
- 返程投资解决之道
- 结构体、共用体、枚举