Visual C++面向对象与可视化程序设计_03.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:52 大小:1.1MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

Visual C++面向对象与可视化程序设计_03.ppt

VisualC++面向对象与可视化程序设计_03.ppt

预览

免费试读已结束,剩余 42 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第3讲Windows的图形设备接口及windows绘图1.GDI的一些基本概念设备描述表即为设备环境的属性的集合应用程序2.图形刷新(2)系统对刷新请求的响应当用户区的内容需要刷新时,系统向应用程序消息队列发送WM_PAINT消息,系统在应用程序的消息队列中加入该消息,以通知窗口函数执行刷新处理窗口被另一个窗口覆盖的区域称为无效区域。Windows系统为每个窗口建立了一个PAINTSTRUCT结构,该结构中包含了包围无效区域的一个最小矩形的结构RECT,应用程序可以根据这个无效矩形执行刷新操作。常用的Windows应用程序刷新窗口的方法3.获取设备环境的方法(2)调用GetDC函数如果绘图工作并非由WM_PAINT消息驱动,则调用GetDC函数获取设备环境。hdc=GetDC(hwnd);4.映像模式映像模式定义了将逻辑单位转化为设备的度量单位以及设备的x方向和y方向,程序员可在一个统一的逻辑坐标系中操作而不必考虑输出设备的坐标系情况缺省的映射模式应用程序可获取设备环境的当前映像模式,并根据需要设置映像模式。窗口区域的定义由SetWindowExtEx函数完成,其函数原型形为:BOOLSetWindowExtEx(HDChdc,intnHeight,nWidth,//以逻辑单位表示的窗口区域高宽度LPSIZElpSize,//函数调用前窗口区域尺寸的SIZE结构地址);视口的缺省原点和窗口的缺省原点均为(0,0)。可通过调用函数SetViewportOrgEx和SetWindowOrgEx设定窗口与视口的原点。SetWindowOrgEx函数的原形为:BOOLSetWindowOrgEx(HDChdc,intX,Y,//以逻辑单位表示的窗口原点坐标LPPOINTlpPoint//函数调用前原点坐标的POINT结构的地址);二、绘图工具与颜色(2)创建新画笔,形式如下:hP=CreatePen(intnPenStyle,//确定画笔样式intnWidth,//画笔宽度COLORREFrgbColor//画笔颜色);2.画刷画刷的创建与应用与画笔很相似,操作画刷也包括创建、选入设备环境和删除。(1)画刷的创建使用画刷需事先定义一个画刷句柄。形式如下:HBRUSHhBr;//hBr为画刷句柄然后调用函数GetStockObject获取Windows系统提供的7种画刷hBr=(HBRUSH)GetStockObject(nBrushStyle)画刷样式可调用函数CreateSolidBrush和CreateHatchBrush创建画刷,hBr=CreateSolidBrush(rgbColor);3.颜色三、常用绘图函数4.绘制椭圆弧线的函数Arc,BOOLArc(HDChdc,intX1,intY1,//边框矩形左上角的逻辑坐标intX2,intY2,//边框矩形右下角的逻辑坐标intX3,intY3,//椭圆弧起始点坐标intX4,intY4//椭圆弧终止点坐标)5.绘制饼图,并用当前画刷进行填充BOOLPie(HDChdc,intX1,intY1,//边框矩形左上角的逻辑坐标intX2,intY2,//边框矩形右下角的逻辑坐标intX3,intY3,//椭圆弧起始经线的确定点坐标intX4,intY4//椭圆弧终止经线的确定点坐标)6.绘制矩形,并用当前画刷进行填充BOOLRectangle(HDChdc,intX1,intY1,intX2,intY2)四、应用实例【例3-1】利用绘图函数创建填充区。共有三个填充图形,第一个是用深灰色画刷填充带圆角的矩形,第二个是采用亮灰色画刷填充一个椭圆型图,第三个是用虚画刷填充饼形图。BOOLInitWindowsClass(HINSTANCEhInstance);BOOLInitWindows(HINSTANCEhInstance,intnCmdShow);HWNDhWndMain;longWINAPIWndProc(HWNDhWnd,UINTiMessage,UINTwParam,LONGlParam){HDChDC;//定义指向设备的句柄HBRUSHhBrush;//定义指向画刷的句柄HPENhPen;//定义指向画笔的句柄PAINTSTRUCTPtStr;//定义指向包含绘图信息的结构体变量SelectObject(hDC,hBrush);//选择画刷Ellipse(hDC,150,50,200,150);//绘制椭圆hBrush=(HBRUSH)GetStockObjec