一、MFC绘图基础知识 CDC类
在Windows平台下,GDI图形设备接口被抽象为上下文CDC类。Windows平台直接接受图形数据信息的不是显示器和打印机等硬件设备,而是CDC对象。MFC中,CDC类定义设备上下文对象的基类,封装了所需的成员函数,调用CDC类的成员函数,绘制和打印图形及文字。
CDC类派生出CClientDC类、CMetaFileDC类、CPaintDC类和CWindowDC类。
MFC常用CPoint、CRect、CSize等数据类型。
(1) CPoint类:存放点坐标(x,y);
(2) CRect类:存放矩形左上顶点和右下角顶点的坐标(top、left、right、bottom),其中(top,left)为矩形的左上角顶点,(right,bottom)为矩形的右下角顶点;
(3) CSize类:存放矩形的宽度和高度的坐标(cx,cy),其中cx为矩形的宽度,cy为矩形的高度。
MFC绘图工具类包括GGdiObject、CBitmap、CBrush、CFont、CPallette、CPen和CRgn等。常用的包括:
(1) CBitmap:封装了一个GDI位图,提供位图操作接口;
(2) CFont:封装库GDI字体,可以选作设备上下文中的当前字体;
(3) CBrush:封装了GDI画刷,选作设备上下文的当前画刷,画刷用于填充图形内部;
(4) CPen:封装了GDI画笔,选作设备上下文的当前画笔,画笔用于绘制图形边界线;
(5) CPallette:封装了GDI调色板,提供应用程序火绒显示器之间的颜色接口;
(6) CGdiObject:GDI绘图工具的基类,一般不能之直接使用。
**
二、MFC单文档编程介绍
首先创建MFC项目,选择“MFC应用”工程,然后选择单文档格式,项目样式选择“MFC standard”
创建完工程,在工作区间主要包括类视图,资源视图和文件视图。其中类视图主要包含各个类,文件视图包括源文件.cpp和头文件.h。
头文件一般用来包含其他头文件、声明一些函数、类,这样在其他文件中直接包含.h文件就可以包含这些函数和类了。当然,对一些小程序可以没有.h文件,而都是写在.cpp文件中,但为以后考虑,还是分开比较好。C++里的函数不是一般都需要声明然后才能使用吗,所以一般把函数的声明放在头文件里面,然后把定义放在cpp文件中,两个文件合起来才是完整的函数。类也是这样。这样的好处是如果你想在其他地方引用已有的函数或类,只要包含这个头文件就行了,很方便。
MFC写代码通常在***View.cpp文件下,在“Test01.cpp”中找到OnDraw()函数,用于绘图:
**
三、MFC绘图函数
这里默认的坐标系是原点在左上角,x向右为正方向,y向下为正方向,但是这和我们平时的坐标系是不一样的,所以我们需要自定义坐标系。
**
四、自定义坐标系
(1)设置映射模式函数
原型:virtual int SetMapMode(int nMapMode);
参数:nMapMode用于指定新的映射模式,可常取MM_ANISOTROPIC。(MM_ANISOTROPIC是窗口范围和设备范围可以任意改变,要求使用SetWindowExt函数设置窗口范围,使用SetViewPortExt函数设置视区的范围)
(2)设置窗口范围函数
原型:virtual CSize SetWindowExt(int cx,int cy);
参数:cx窗口x范围的逻辑单位,cy窗口y范围的逻辑单位
(3)设置视区范围函数
原型:virtual CSize SetViewportExt(int cx,int cy);
参数:cx窗口x范围的逻辑单位,cy窗口y范围的逻辑单位
(4)设置视区原点函数
原型:virtual CPoint SetViewportOrg(int x,int y);
参数:x,y是视区新原点的设备坐标;
2、使用偏移矩形函数
原型:void OffsetRect(int x,int y);
参数:x左右偏移量,y上下偏移量;
平移后,rect矩形区域和客户区重叠