MFC图形绘制编程教程.ppt
《MFC图形绘制编程教程.ppt》由会员分享,可在线阅读,更多相关《MFC图形绘制编程教程.ppt(60页珍藏版)》请在三一办公上搜索。
1、Windows程序设计,第三章 图形编程,3.1设备环境,首先要明白一个常识,Windows是早于C+的,并独立于C+之外,因此,Windows的某些对象(注意这个说法“Windows的对象”)并不都属于C+封装技术的规范之内,即Windows的这些对象是Windows作为一个OS本身的对象,不是由某个C+的类创建而来,但是在C+里却可以用一个类封装这个(或这些)对象,并创建它们。设备环境就属于上述的对象之一,它是Windows的对象,MFC用CDC类封装了设备环境对象。,3.1设备环境,Windows API给出了4种类型的设备环境显示设备环境:支持视频显示器上的图形操作;信息设备环境:提供
2、设备数据的检索;内存设备环境:支持位图上的图形操作;打印设备环境:支持打印机或绘图仪上的图形操作。在MFC中,针对Widnows的这4类设备环境,分别用4个DC类进行了封装:CDC类:基类;CPaintDC:只用于屏幕绘图;CClientDC:用于窗口客户区绘图;CWindowDC:用于窗口绘图;CMetaFileDC:用于操作图元文件,3.1设备环境,CObject,CDC,CPaintDC,CClientDC,CWindowDC,CMetaFileDC,3.1设备环境,屏幕设备环境用于绘制窗口内容创建屏幕设备环境实例指针CDC*pDC=GetDC();/绘制客户区CDC*pDC=GetWi
3、ndwoDC;/绘制非客户区CDC*pDC=CDC:FromHandle(:GetDC(NULL);/绘制整个屏幕释放设备环境实例指针ReleaseDC(pDC);下面简单说明屏幕设备环境的使用方法信件MFC工程找到OnDraw()函数补充编写OnDraw()函数编译程序执行程序,3.1设备环境,3.1设备环境,3.1设备环境,单文档记事本多文档word,execl基本对话框扫雷,3.1设备环境,3.1设备环境,3.1设备环境,3.1设备环境,3.1设备环境,3.1设备环境,3.1设备环境,3.1设备环境,编译:主要进行语法检查,看你编的程序语法上有没有错误,链接:将编译好的文件与库函数组装,
4、生成可执行的exe文件,设置断点:在光标所在行设置或取消断点,调试:进入调试状态,程序会在第一个断点处停下等待。,3.1设备环境,Step Into如果当前正在执行的语句中有函数,那么会进入函数体单步执行函数体的每一条语句。Step Over如果当前正在执行的语句中有函数,会执行调用函数,不单步执行函数体。Step Out如果当前正单步执行函数体,会直接跳出函数执行,返回上层代码。,3.1设备环境,变量监视窗口程序中所有变量及其值均可以在其中查到,自定义变量监视窗口可以将上面窗口中某个变量拖动到本窗口中来监视,3.1设备环境,3.1设备环境,内存设备环境 内存设备环境通常是在文件处理的时候需要
5、的,它为进行处理的文件开辟一片内存空间。典型的应用是进行位图操作时:,CDC MemDC;/创建CDC类的一个实例MemDCCBitmap bitmap;/声明位图类CBitmap的一个实例对象bitmapMemDC.CreateCompatibleDC(pDC);/创建兼容DCbitmap.CreateCompatibleDC(pDC,ICON_WIDTH,ICON_HEIGHT);/创建位图类CBitmap的实例对象MemDC.SelectObject(/内存设备对象选中位图对象bitmap,3.2 绘图函数,画点CDC实例对象包含两个常用画点函数SetPixel(x,y,RGB(r,g,
6、b)用指定的颜色画一个像素,返回绘制时使用的实际颜色.SetPixelV(x,y,RGB(rg,b)用指定的颜色画一个像素,没有返回值,因此绘图速度比上一个函数要快,3.2 绘图函数,3.2 绘图函数,画线CDC实例对象包含8个常用画线函数MoveTo()开始画线、弧和多边形时,把光标移动到一个初始位置;LineTo()画一条从初始位置到另一个点的直线;Arc()画一段弧;AngleArc()画一条线,然后画一段弧,并更新初始位置;PolyDraw()画一系列线段和Bezier(贝济埃)曲线;PolyLine()画一系列线段;PolyPolyLine()画多个系列线段;,3.2 绘图函数,3.
7、2 绘图函数,画形状Ellipse()画一个椭圆;Rectangle()画一个矩形;Pie()画一个扇形;RoundRect()画一个圆角矩形;Draw3dRect()画一个三维矩形;Polygon()画一个得到焦点的矩形;DrawEdge()画一个矩形的边缘;PolyPolygon()创建一个或多个多边形;,3.2 绘图函数,定义弧的椭圆母体所对应的矩形区域,定义切割椭圆母体的两个点,3.2 绘图函数,高光部分的颜色,阴影部分的颜色,定义扇形、弓形的椭圆母体所对应的矩形区域,定义切割椭圆母体的两个点,注意:逆时针原则,3.2 绘图函数,形状填充和翻转FillRect()填充一个矩形;Fill
8、SolidRect()用一单色填充一个矩形;InvertRect()反转一个矩形颜色;FloodFill()用当前画刷填充一个区域;ExtFloodFill()用当前画刷填充一个区域,提供比FloodFill()成员函数更多的灵活性;FrameRect()画一个矩形的边框,3.2 绘图函数,绘制文本TextOut()在一个指定位置,输出一个字符串;ExtTextOut()在一个矩形区域内输出一个字符串;DrawText()在指定的矩形区域内绘制文本,比TextOut()有更多的选择,如文本居中和显示多行文本等;,3.2 绘图函数,绘制位图和图标位图由大量像素组成的颜色阵列。图标位图的一种,通常
9、为3232像素,图标具有透明色这一附加能力。绘图函数介绍DrawIcon()在指定位置画一个图标;BitBlt()从指定的设备环境中复制一个位图,通常是从磁盘中装入或在内存中创建;PatBlt()创建一个位图模式;LoadBitmap()从应用程序资源里创建一个位图对象;CreateBitmapIndirect()由BITMAP结构提供信息,创建一个位图对象;CreateBitmap()创建位图结构信息;CreateCompatibleBitmap()用一个已有的设备环境指向的位图对象所提供的信息,创建一个位图;,3.2 绘图函数,设备无关位图 位图文件中包含了色彩数据及绘制数据等显示位图所需
10、的所有信息,这样它就可以在各种不同显示设备上进行显示。设备相关位图 不包含色彩数据,而是将要显示的色彩数据映射到某一设备的调色板上去。因此只有特定的设备能够显示该位图。位图的绘制:在屏幕或打印机上绘制一个位图,需要两个设备环境,一个包含位图属性,另一个用来复制位图。,3.2 绘图函数,3.2 绘图函数,3.3 绘图属性,在绘图和对设备环境进行操作的时候,有很多地方需要用户提前指定,如线条个样式,笔刷的色彩,背景的颜色等等。这些都需要程序员编程时进行设定,3.3 绘图属性,画线属性CreatePen()用指定的颜色、宽度和模式创建一个画笔对象,模式可以是从实线到虚线的任何一种,由用户指定线和空格
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MFC 图形 绘制 编程 教程
链接地址:https://www.31ppt.com/p-5439896.html