文档详情

高级语言C++程序设计-第13章-GDI编程.ppt

发布:2018-06-06约3.69千字共31页下载文档
文本预览下载声明
* * * * * * * 第13章 GDI编程 GDI与设备环境(DC) 用CDC绘图 应用举例 绘图工具类 应用举例 * 李宝全 主要内容 GDI与设备环境(DC) 用CDC绘图 应用举例 绘图工具类 应用举例 * 图形设备接口(GDI) Windows提供了一个称为图形设备接口(Graphics Device Interface,GDI)的抽象接口。 GDI 作为Windows的重要组成部分,负责管理用户绘图操作时功能的转换。 用户通过调用GDI 函数与设备打交道,GDI 通过不同设备提供的驱动程序将绘图语句转换为对应的绘图指令,避免了用户对硬件直接进行操作,从而实现设备无关性(显示器或打印机)。 * * 绘图过程 应 用 程 序 设 备 环 境 图 形 设 备 接 口 设 备 驱 动 程 序 物 理 设 备 DC GDI GDI的图形输出 应用程序可以使用GDI 创建如下图形输出 矢量图形:画线和填充图形,包括点、直线、曲线、多边形、扇形和矩形等。 光栅图形:通过光栅图形函数对以位图形式存储的数据进行操作,包括各种位图和图标的输出。 屏幕:对若干行和列的像素操作 打印机:对若干行和列的点阵输出 直接从内存到显存的复制操作,速度快,内存要求高。 文本:以图形方式输出文本,以逻辑坐标为单位计算输出位置,而DOS是以行为单位。用户可以设置文本的各种效果,如加粗、斜体、设置颜色等。 * 设备环境 应用程序的输出面向设备环境(Device Context,DC),是一个虚拟逻辑设备,也称设备描述表或设备上下文。设备环境DC 是由GDI 创建,用来代表设备连接的数据结构。 DC 的主要功能 允许应用程序使用一个输出设备。 提供应用程序、设备驱动和输出设备之间的连接。 保存当前信息,例如当前的画笔、画刷、字体和位图等图形对象及其属性,以及颜色和背景等影响图形输出的绘图模式。 保存窗口剪切区域(Clipping Region),限制程序输出到输出设备中窗口覆盖的区域。 * * 坐标系统 1. 设备坐标系统 x轴自左至右,y轴从上到下,坐标原点在屏幕左上角 屏幕坐标系统; 窗口坐标系统; 用户区坐标系统 2. 逻辑坐标系统 坐标为自下而上,坐标原点在屏幕左下角 X Y O 设备坐标系统 O X Y 逻辑坐标系统 主要内容 GDI与设备环境(DC) 用CDC绘图 应用举例 绘图工具类 应用举例 * 设备环境类CDC MFC封装了DC,提供CDC 类及它的子类以访问GDI。 * 所有设备环境类的基类,对GDI的所有绘图函数进行了封装 用于响应窗口重绘消息的绘图输出,不仅可对客户区进行操作,还可以对非客户区进行操作 代表窗口客户区的设备环境 代表整个窗口的设备环境,包括客户区和非客户区 代表Windows图元文件设备环境 CDC类常用绘图函数 Arc:绘制一段弧 Chord:绘制弦形 Ellipse:绘制椭圆或圆 MoveTo:将当前位置移动到指定位置 LineTo:从当前位置到指定位置画一条直线 Polyline:画连接指定点的折线段 PolyBezler:根据两个端点和两个控制点画贝塞尔曲线 Pie:画冰块 Polygon:根据两个或两个以上的顶点绘制一个多边形 Rectangle:根据指定的左上角和右下角坐标绘制一个矩形 RoundRect:画圆角矩形 SetPixel:画一个点 * 绘图颜色 DWORD类型的COLORREF数据用于存放颜色值“0x00bbggrr” 低位字节存放红色强度值 第2 个字节存放绿色强度值 第3个字节存放蓝色强度值 高位字节存放0 可用RGB宏设置颜色值,将红、绿、蓝分量值转换为COLORREF类型的颜色数据 COLORREF RGB( BYTE byRed, // red component of color BYTE byGreen, // green component of color BYTE byBlue // blue component of color ); * 常用颜色对照表 例:COLLORREF red = RGB(255,0,0); * 在MFC中获取DC 在如OnDraw等函数中传递一个指向CDC 对象的指针 如OnDraw(CDC* pDC); 使用构造函数构建对象 一般不构造CDC对象 在CWnd类的OnPaint函数中,定义CPaintDC对象 CPaintDC dc(this); 在CWnd类的其它函数中,定义CClientDC和CWindowDC的对象 CClientDC dc(this); CWindowDC dc(this); * CClientDC、CPaintDC和CWindowDC的区别 当窗口的某个区域需要重绘时激发窗口重绘消息WM_PAIN
显示全部
相似文档