Windows图形编程基础
软件教研室 计算机图形学 第三章 Window图形编程基础 一、设备描述表DC及相关的MFC类 二、图形设备接口(GDI : Graphics device Interface) 三、 DC与GDI的关系 四、基本图形编程的实现 五、映射模式、坐标转换与绘图模式 问题:如何实现类似与windows画图板的一个小程序。实现直线段、矩形、圆(椭圆)、多边形等图形的绘制?答案:window图形编程 问题:如何实现类似与windows画图板的一个小程序。实现直线段、矩形、圆(椭圆)、多边形等图形的绘制? 答案:window图形编程 ?How to do?? 图形编程的基础知识 Window下图形绘制的机制 早期DOS程序绘制图形是利用设备相关的函数直接在硬件上绘制图形。复杂、移植性性差 在Windows世界里, 直接写到硬件上的应用程序被认为是禁忌, 应用程序使用一个称之为设备描述表(DC)的接口来实现图形绘制。DC是 物理设备(如监视器、打印机、绘图仪等)的逻辑表示。 图形编程的基础知识 Window下图形绘制的机制 一、设备描述表DC 设备描述表DC(Device Context),又称设备上下文, 设备环境。是一个绘制图形方法的集合,不仅可以绘制各种图形,还可以确定在应用窗口中绘制图形的方式,即确定绘图模式和映射模式。 绘图前,必须获取绘图窗口区域的一个设备描述表DC,接着才能进行GDI函数的调用,最后执行合适于设备环境DC的命令。 一、设备描述表DC 一、设备描述表DC CClientDC类 该类中的设备描述表表示窗口的客户区。客户区左上角的坐标为(0,0) CClientDC 的构造函数调用 GetDC( ),析构函数调用 ReleaseDC( ) CClientDC的使用步骤 1、创建CClientDC对象 2、在CClientDC对象上绘画 3、撤消CClientDC对象 一、设备描述表DC CWindowDC类 该类的设备描述表表示整个窗口(包括用户区和非用户区) CWindowDC 的构造函数调用 GetDC( ),析构函数调用 ReleaseDC( ) 使用方式 使用方式同CClientDC 二、图形设备接口 图形对象类是 MFC 封装的 Windows 绘图工具, 形成了完整图形设备接口。常用的GDI对象及相关的MFC类: 二、图形设备接口 CBitmap 位图是一种位矩阵,每一个显示像素都对应于其中的一个或多个位。可以利用该对象类来显示图像,也可以利用它来创建画刷。 CBrush 决定填充区域时所采用的颜色或模板。 CFont 用于输出文字时选用不同风格和大小的字体。可选择的风格包括:是否为斜体,是否为粗体,字体名称,是否有下划线等。 CPen 在画点和画线时有用。它的属性包括颜色,宽度,线的风格,如虚线,实线,点划线等。 CRgn 特殊的GUI对象。由多边形,椭圆或两者组合形成的一种范围,可利用它来限制作图区域或是改变窗口外型,填充,剪裁,鼠标点中测试等。 CPalette 调色板是一个颜色映射接口,利用它可充分发挥输出设备的颜色描绘能力。 三、DC与GDI之间的关系 DC和GDI是实现计算机绘图的两个重要的组成部分。DC主要定义了绘图的状态、方式以及场景,而GDI则主要定义了采用的绘图工具。 3.1 在DC中创建一个Graphics Object Define a graphic object on the stack frame. Initialize the object with the type-specific create function, such as CreatePen. Alternatively, initialize the object in the constructor. ---创建 Select the object into the current device context, saving the old graphic object that was selected before. ---选入DC When done with the current graphic object, select the old graphic object back into the device context to restore its state.---恢复 Allow the frame-allocated graphic object to be deleted automatically when the scope is exi