MFC图形绘制编程教程ppt课件.ppt_第1页
MFC图形绘制编程教程ppt课件.ppt_第2页
MFC图形绘制编程教程ppt课件.ppt_第3页
MFC图形绘制编程教程ppt课件.ppt_第4页
MFC图形绘制编程教程ppt课件.ppt_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Windows程序设计 第三章图形编程 1 3 1设备环境 首先要明白一个常识 Windows是早于C 的 并独立于C 之外 因此 Windows的某些对象 注意这个说法 Windows的对象 并不都属于C 封装技术的规范之内 即Windows的这些对象是Windows作为一个OS本身的对象 不是由某个C 的类创建而来 但是在C 里却可以用一个类封装这个 或这些 对象 并创建它们 设备环境就属于上述的对象之一 它是Windows的对象 MFC用CDC类封装了设备环境对象 2 3 1设备环境 WindowsAPI给出了4种类型的设备环境显示设备环境 支持视频显示器上的图形操作 信息设备环境 提供设备数据的检索 内存设备环境 支持位图上的图形操作 打印设备环境 支持打印机或绘图仪上的图形操作 在MFC中 针对Widnows的这4类设备环境 分别用4个DC类进行了封装 CDC类 基类 CPaintDC 只用于屏幕绘图 CClientDC 用于窗口客户区绘图 CWindowDC 用于窗口绘图 CMetaFileDC 用于操作图元文件 3 3 1设备环境 CObject CDC CPaintDC CClientDC CWindowDC CMetaFileDC 4 3 1设备环境 屏幕设备环境 用于绘制窗口内容创建屏幕设备环境实例指针CDC pDC GetDC 绘制客户区CDC pDC GetWindwoDC 绘制非客户区CDC pDC CDC FromHandle GetDC NULL 绘制整个屏幕释放设备环境实例指针ReleaseDC pDC 下面简单说明屏幕设备环境的使用方法信件MFC工程找到OnDraw 函数补充编写OnDraw 函数编译程序执行程序 5 3 1设备环境 6 3 1设备环境 7 3 1设备环境 单文档 记事本多文档 word execl基本对话框 扫雷 8 3 1设备环境 9 3 1设备环境 10 3 1设备环境 11 3 1设备环境 12 3 1设备环境 13 3 1设备环境 14 3 1设备环境 15 3 1设备环境 编译 主要进行语法检查 看你编的程序语法上有没有错误 链接 将编译好的文件与库函数组装 生成可执行的exe文件 设置断点 在光标所在行设置或取消断点 调试 进入调试状态 程序会在第一个断点处停下等待 16 3 1设备环境 StepInto 如果当前正在执行的语句中有函数 那么会进入函数体单步执行函数体的每一条语句 StepOver 如果当前正在执行的语句中有函数 会执行调用函数 不单步执行函数体 StepOut 如果当前正单步执行函数体 会直接跳出函数执行 返回上层代码 17 3 1设备环境 变量监视窗口 程序中所有变量及其值均可以在其中查到 自定义变量监视窗口 可以将上面窗口中某个变量拖动到本窗口中来监视 18 3 1设备环境 19 3 1设备环境 内存设备环境内存设备环境通常是在文件处理的时候需要的 它为进行处理的文件开辟一片内存空间 典型的应用是进行位图操作时 CDCMemDC 创建CDC类的一个实例MemDCCBitmapbitmap 声明位图类CBitmap的一个实例对象bitmapMemDC CreateCompatibleDC pDC 创建兼容DCbitmap CreateCompatibleDC pDC ICON WIDTH ICON HEIGHT 创建位图类CBitmap的实例对象MemDC SelectObject 内存设备对象选中位图对象bitmap 20 3 2绘图函数 画点 CDC实例对象包含两个常用画点函数SetPixel x y RGB r g b 用指定的颜色画一个像素 返回绘制时使用的实际颜色 SetPixelV x y RGB rg b 用指定的颜色画一个像素 没有返回值 因此绘图速度比上一个函数要快 21 3 2绘图函数 22 3 2绘图函数 画线 CDC实例对象包含8个常用画线函数MoveTo 开始画线 弧和多边形时 把光标移动到一个初始位置 LineTo 画一条从初始位置到另一个点的直线 Arc 画一段弧 AngleArc 画一条线 然后画一段弧 并更新初始位置 PolyDraw 画一系列线段和Bezier 贝济埃 曲线 PolyLine 画一系列线段 PolyPolyLine 画多个系列线段 23 3 2绘图函数 24 3 2绘图函数 画形状Ellipse 画一个椭圆 Rectangle 画一个矩形 Pie 画一个扇形 RoundRect 画一个圆角矩形 Draw3dRect 画一个三维矩形 Polygon 画一个得到焦点的矩形 DrawEdge 画一个矩形的边缘 PolyPolygon 创建一个或多个多边形 25 3 2绘图函数 定义弧的椭圆母体所对应的矩形区域 定义切割椭圆母体的两个点 26 3 2绘图函数 高光部分的颜色 阴影部分的颜色 定义扇形 弓形的椭圆母体所对应的矩形区域 定义切割椭圆母体的两个点 注意 逆时针原则 27 28 3 2绘图函数 形状填充和翻转FillRect 填充一个矩形 FillSolidRect 用一单色填充一个矩形 InvertRect 反转一个矩形颜色 FloodFill 用当前画刷填充一个区域 ExtFloodFill 用当前画刷填充一个区域 提供比FloodFill 成员函数更多的灵活性 FrameRect 画一个矩形的边框 29 3 2绘图函数 绘制文本TextOut 在一个指定位置 输出一个字符串 ExtTextOut 在一个矩形区域内输出一个字符串 DrawText 在指定的矩形区域内绘制文本 比TextOut 有更多的选择 如文本居中和显示多行文本等 30 3 2绘图函数 绘制位图和图标位图 由大量像素组成的颜色阵列 图标 位图的一种 通常为32 32像素 图标具有透明色这一附加能力 绘图函数介绍DrawIcon 在指定位置画一个图标 BitBlt 从指定的设备环境中复制一个位图 通常是从磁盘中装入或在内存中创建 PatBlt 创建一个位图模式 LoadBitmap 从应用程序资源里创建一个位图对象 CreateBitmapIndirect 由BITMAP结构提供信息 创建一个位图对象 CreateBitmap 创建位图结构信息 CreateCompatibleBitmap 用一个已有的设备环境指向的位图对象所提供的信息 创建一个位图 31 3 2绘图函数 设备无关位图位图文件中包含了色彩数据及绘制数据等显示位图所需的所有信息 这样它就可以在各种不同显示设备上进行显示 设备相关位图不包含色彩数据 而是将要显示的色彩数据映射到某一设备的调色板上去 因此只有特定的设备能够显示该位图 位图的绘制 在屏幕或打印机上绘制一个位图 需要两个设备环境 一个包含位图属性 另一个用来复制位图 32 3 2绘图函数 33 3 2绘图函数 34 3 3绘图属性 在绘图和对设备环境进行操作的时候 有很多地方需要用户提前指定 如线条个样式 笔刷的色彩 背景的颜色等等 这些都需要程序员编程时进行设定 35 3 3绘图属性 画线属性CreatePen 用指定的颜色 宽度和模式创建一个画笔对象 模式可以是从实线到虚线的任何一种 由用户指定线和空格的长度 CreatePenIndirect 用LPLPGPEN结构创建一个Pen对象 不必创建用户自己的Pen对象 SelectStockObject 取出系统默认绘图对象 系统预定义对象相应的标志值为 BLACK PEN 包含黑画笔的属性 WHITE PEN 包含白画笔的属性 NULL PEN 使用绘图函数不能画线 36 3 3绘图属性 SelectObject 函数用于将新对象选中并加入设备环境中以便进行下一步的绘制 同时该函数返回设备环境中原有对象的指针 以方便用户在以后回复系统原有绘制属性 因此在实际实用过程中 通常采用 Old k SelectObject New k 的方式将系统原有的绘制对象指针保存下来 37 3 3绘图属性 形状填充属性CreateSolidBrush 创建一个原色Brush对象 CreateHatchBrush 创建一个指定阴影模式和颜色的画刷 CreateBrushdirect 用LOGBRUSH结构中的设置值创建CBrush对象 CreatePatternBrush 创建一个用位图指定模式的Brush CreateDIBPatternBrush 创建一个用设备无关位图指定模式的CBrush对象 CreateSysColorBrush 创建一个系统默认颜色的Brush对象 SelectStockObject 取出系统默认绘图对象BLACK BRUSH 用黑色填充形状的属性WHITE BRUSH 用白色填充形状的属性DKGRAY BRUSH 用深灰色填充形状的属性GRAY BRUSH 用灰色填充形状的属性LTGRAY BRUSH 用浅灰色填充形状的属性NULL BRUSH 使绘图函数不能对形状进行填充 38 39 3 3绘图属性 文本绘制属性文本颜色 SetTextColor 设定前景色 即文本颜色 SetBKColor 设置输出文本处的背景色 文本对齐方式 SetTextAlign TA LEFT 左对齐方式TA RIGHT 右对齐方式TA CENTER 居中对齐方式TA BASELINE 文本基线对齐方式TA TOP 文本顶部对齐方式TA BOTTOM 文本底部对齐方式 40 3 3绘图属性 文本绘制属性文本字体CreateFont 创建一个字体对象 指定字体特性CreatePointFont 创建指定字样名和尺寸的字体CreateFontIndirect 使用LOGFONT结构创建字体CreatePointFontIndirect 创建LOGFONT结构所指定属性的字体SelectStockObject 获取系统默认字体SYSTEM FONT Windows窗口中绘制菜单 任务栏时用的默认字体SYSTEM FIXED FONT Windows在3 0版以前使用的默认字体ANSI FIXED FONT 非成比例间隔的默认字体 每个字符在行中占用相同的空间 ANSI VAR FONT 成比例间隔的默认字体 字母I在一行中占据的空间比W少 LOGFONT结构定义 typedefstructtagLOGFONT LONGlfHeight LONGlfWidth LONGlfEscapement LONGlfOrientation LONGlfWeight BYTElfItalic BYTElfUnderline BYTElfStriceOut BYTElfCharSet BYTElfOutPrecision BYTElfClipPrecision BYTElfQuality BYTElfPitchAndFamily TCHARlfFaceName LF FACESIZE LOGFONT PLOGFONT 41 42 3 3绘图属性 映像模式 Windows在显示设备上进行绘制时的制式 通常默认为像素形式 也可是英寸 毫米等SetMapMode 设施绘图映像模式函数MM TEXT 默认映像模式 x y表示一个屏幕像素或打印机点阵 MM HIENGLISH x y相当于屏幕或打印页上的1 1000英寸 由Windows系统决定屏幕上多少个像素相当于1 1000英寸MM LOENGLISH x y相当于屏幕或打印页上的1 1000英寸MM HIMETRIC x y相当于屏幕或打印纸上1 100mmMM LOMETRIC x y相当于屏幕或打印纸上1 10mmMM TWIPS x y相当于屏幕设备上的1 1440英寸MM ANISOTROPIC x方向的一个单位不同于y方向一个单位MM ISOTROPIC x方向的一个单位等同与y方向的一个单位 43 44 3 3绘图属性 调色板属性应用程序通常需要拥有自己的调色板 以便将自己运行时需要的颜色加载到系统调色板去 从而进行使用 调色板属性包含在Palette对象中 要使用MFC创建一个Palette对象 需要创建一个CPalette类的实例 然后用CreatePalette 函数创建实例 若不需要用自定义调色板对象 可以使用SelectStockObject DEFAULT PALETTE 获取系统默认调色板对象 45 3 3绘图属性 混合属性线条混合 控制线条与背景的混合模式 使用SetROP2 函数进行设置R2 COPYPEN 默认方式 线条覆盖背景颜色R2 NOT 最终线条的颜色是当前屏幕颜色的反转色R2 XORPEN 最终的线条的颜色是Pen对象颜色和屏幕颜色的异或R2 MERGEPEN 最终线条的颜色是Pen对象颜色和屏幕颜色的或R2 BLACK 线条总是黑色 且忽略Pen对象颜色R2 WHITE 线条总是白色 且忽略Pen对象颜色 46 3 3绘图属性 混合属性文本混合 决定是否需要文本背景色 或把文本绘制在已有内容上面 使用SetBkMode 函数进行设置OPAQUE 默认值 输出文本的区域被SetBkColor 函数指定的颜色覆盖 TRANSPARENT 允许在一个图像上绘制文本 而不会破坏原来的图像 47 48 3 3绘图属性 剪裁属性剪裁属性在绘图区定义一个区域 在该区域以外 任何绘制都被忽略 使用MFC创建Region对象 首先需要建立一个CRgn类的实例 然后调用成员函数生成实例 CreateRectRgn 用一个矩形区域初始化一个Region对象CreateRectRgnIndir

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论