资源预览内容
第1页 / 共26页
第2页 / 共26页
第3页 / 共26页
第4页 / 共26页
第5页 / 共26页
第6页 / 共26页
第7页 / 共26页
第8页 / 共26页
第9页 / 共26页
第10页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Windows API 编程第二章:GDI 编程,电子信息与工程学院 指导老师:贾 迪 邮箱:lgd_,第二章:GDI 编程,几个重要的概念(复习) 函数名作为参数的例子 GDI 概述 画笔与画刷 GDI 绘图函数 GDI 映射模式,几个重要的概念,句柄: Windows中,句柄使用十分频繁,那么什么是句柄呢?句柄是一个32位的数,程序通过它来引用相应的对象(比如学号,房间号等)。 标示符(标示符前缀): CS_HREDRAW(0 x0002),DT_SINGLELINE(0 x00000020),WM_KEYDOWN(0 x0100)。 CS:窗口类风格选项,DT:绘制文本选项,WM:窗口消息选项。 数据类型: WPARAM在win16系统中定义为WORD(16位),LPARAM定义为LONG(32位)。 WPARAM在win32系统中定义为UINT(32位),LPARAM定义为LONG(32位)。 LRESULT是一个句柄LONG类型。,第二章:GDI 编程,几个重要的概念 函数名作为参数的例子(复习) GDI 概述 画笔与画刷 GDI 绘图函数 GDI 映射模式,窗口类初始化,WinMain函数 定义变量; 窗口类初始化; 注册窗口类; 创建窗口实例; 显示并更新窗口; 消息循环; ,wc.| CS_VREDRAW; wc.lpfnWndProc = (WNDPROC)WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon( NULL, IDI_APPLICATION ); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1); wc.lpszMenuName = lpszAppName; wc.lpszClassName = lpszAppName;,函数名作为参数的例子,wc.lpfnWndProc = (WNDPROC)WndProc; wc: 类实例。 lpfnWndProc: 窗口处理过程(参数)。 WNDPROC: 自定义数据类型。 WndProc:窗口处理过程。 data.func_add = (pAdd)Add; data: 类实例。 func_add: 加法函数(参数)。 pAdd: 自定义数据类型。 Add:加法函数。,Typedef 用法,Typedef 声明有助于创建平台无关类型,甚至能隐藏复杂和难以理解的语法。不管怎样,使用 typedef 能为代码带来意想不到的好处。 Typedef在结构体定义,还有一些数组等地方都大量的用到。,Typedef 用法,简单的使用方法 typedef int size; size array4; 掩饰复合类型 typedef char Line81; Line text; 代码简化 int Add (int a,int b); typedef int (*pAdd)(int a,int b); pAdd func_add;,函数名作为参数的例子,wc.lpfnWndProc = (WNDPROC)WndProc; typedef int (*pAdd)(int a,int b); /声明自定义数据类型 int Add (int a,int b) /加法函数 return (a+b); struct Data DWORD x1,x2,x3; pAdd func_add; /加法函数(参数) ; Data data; data.func_add = (pAdd)Add,参考例程,小结,熟悉几个重要的概念 理解将函数作为参数的原理 掌握简单的Win32应用程序运行原理,第二章:GDI 编程,几个重要的概念 函数名作为参数的例子 GDI 概述 画笔与画刷 GDI 绘图函数 GDI 映射模式,GDI 概述,什么是GDI ? Graphics Device Interface (图形设备接口)是 Windows系统的重要组成部分,是Windows系统实现图形界面的基础。 GDI的主要任务是什么? 主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形输出。,GDI 概述,GDI 的应用 绝大多数图形界面应用程序的显示和输出都离不开GDI,利用GDI提供的众多结构及函数,应用程序可以很方便地在屏幕、打印机及其它设备上绘制图形、文本等操作。 GDI 的特性 设备无关性 GDI 的来源 在Windows系统中,有个动态链接库GDI32.DLL,负责图形的输出。该动态链接库为应用程序提供了访问设备驱动程序的方法。,第二章:GDI 编程,几个重要的概念 函数名作为参数的例子 GDI 概述 画笔与画刷 GDI 绘图函数 GDI 映射模式,颜色的表示与设置,颜色的表示 Windows采用32位无符号整形表示色彩,即COLORREF值,按照红、绿、蓝三种颜色的亮度指定一种颜色,其中,每种颜色的值占8位,范围从0-255。,画笔,COLORREF的结构定义 COLORREF RGB(BYTE byRed, BYTE byGreen, BYTE byBlue); 获取COLORREF中的红、绿、蓝分量值 BYTE GetRValue(DWORD rgb); BYTE GetGValue(DWORD rgb); BYTE GetBValue(DWORD rgb);,画笔,分类 Cosmetic(装饰)画笔 Geometric(几何)画笔 特点 Cosmetic画笔包含三个属性:线宽(width)、线型(style)及颜色(color)。它有固定的线宽,不具备按比例缩放的特性,但优点是绘制速度快,在一些适量图形系统中得到了广发应用。 Geometic画笔除了以上三个属性外,还有式样(pattern)、填充图案(hatch)、端点样式(end style)和连接样式(joint style)四个属性。画笔宽度以逻辑单位计算,因此可按比例缩放。,画笔,画笔的创建方法 1.HPEN CreatePen (int fnPenStyle, int nWidth, COLORREF crColor) / Cosmetic画笔 / 画笔句柄 CreatePen (线型,线宽,颜色) 2.HPEN CreatePenIndirect (CONST LOGPEN *lplgpn) / Cosmetic 画笔 /画笔句柄 CreatePenIndirect (逻辑画笔结构指针) Typedef struct tagLOGPEN UINT lopnStyle; POINT lopnWidth; COLORREF lopnColor; LOGPEN, *PLOGPEN; 3.HPEN ExtCreatePen (DWORD dwPenStyle, DWORD dwWidth, CONST LOGBRUSH *lplb, DWORD dwStyleCount, CONST DWORD *lpStyle) /Geometic 画笔 /画笔句柄 ExtCreatePen (画笔样式,宽度,逻辑画刷指针,用于创建自定义型画笔,与dwPenStyle一样),画笔,画笔的使用 / 选择画笔 SelectObject (hdc, hPen); / 删除画笔 DeleteObject(hPen); 注意:在WM_DESTROY消息期间,应用程序即将结束,因此应将已创建的画笔删除,以释放系统资源,同时将最初保存的系统默认画笔选入设备描述表中 DeleteObject(hPen); SelectObject(hdc,oldPen);,画刷,定义与使用 画刷也是一种GDI对象,应用程序使用逻辑画刷填充Rectangle,Ellipse等图形的内部区域。一般画刷是一个8*8的位图,利用水平和垂直重复填充图形内部区域。由于画刷与画笔相似,因此在实际应用中可以查阅相关资料。,第二章:GDI 编程,几个重要的概念 函数名作为参数的例子 GDI 概述 画笔与画刷 GDI 绘图函数 GDI 映射模式,GDI 绘图函数,COLORREF SetPixel (HDC hdc,int nXPos,int nYPos, COLORREF crColor); / 颜色 SetPixel (设备环境句柄,横坐标,纵坐标,颜色) COLORRE GetPixel (HDC hdc,int nXPos,int nYPos); / 颜色 GetPixel (设备环境句柄,横坐标,纵坐标) BOOL MoveTo (HDC hdc, int X, int nY); / 布尔值 MoveTo (设备环境句柄,横坐标,纵坐标) BOOL LineTo (HDC hdc, int nXEnd, int nYEnd); / 布尔值 LineTo (设备环境句柄,终点横坐标,终点纵坐标),第二章:GDI 编程,几个重要的概念 函数名作为参数的例子 GDI 概述 画笔与画刷 GDI 绘图函数 GDI 映射模式,GDI 映射模式,映射模式 映射模式是设备描述表的属性之一,它影响任何客户区的绘图操作。,坐标系统,窗口,视口,映射模式,GDI 映射模式,坐标系统 设备坐标:直接与硬件设备的显示相关,以像素为度量单位。 逻辑坐标:是一种允许自定义的坐标系统,坐标轴方向、单位和 原点位置都可以重新定义。 窗口和视口 从逻辑坐标映射位设备坐标实际上就是从窗口到视口的映射,也就是说,窗口对应逻辑坐标,视口对应设备坐标。,课后作业,运行并调试本章例程 阅读P11页中的程序代码,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号