资源预览内容
第1页 / 共110页
第2页 / 共110页
第3页 / 共110页
第4页 / 共110页
第5页 / 共110页
第6页 / 共110页
第7页 / 共110页
第8页 / 共110页
第9页 / 共110页
第10页 / 共110页
亲,该文档总共110页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第2章 Visual C+图形程序设计基础内容提要lVisual C+是在Microsoft C的基础上发展而来的 ,随着计算机软、硬件技术的快速发展,如今Visual C+已成为集编辑、编译、运行、调试于一体功能强大 的集成编程环境。本章以Visual C+ 6.0为对象,主要 介绍Visual C+集成编成环境的使用、图形设备接口和 常用图形程序设计、鼠标编程以及菜单设计等基础,目 的是通过对Visual C+的学习,掌握Visual C+图形程 序设计的方法,为计算机图形学原理部分的算法实现提 供程序工具和方法。 2.1 Visual C+ 6.0应用程序开发方法l介绍Visual C+ 6.0集成开发环境,以一个 简单的实例介绍利用Visual C+应用程序工程建 立方法和程序设计框架。 2.1.1 Visual C+的集成开发环境l从开始菜单中启动Visual C+ 6.0,进入开 发集成环境。打开一个项目后,可以看到Visual C+ 6.0的开发环境由标题栏、工具栏、工作区 窗口、源代码编辑窗口、输出窗口和状态栏组成 ,见图2.1所示。图2.1 Visual C+ 6.0集成开发环境 标题栏菜单栏工作区源代码 编辑窗口 状态栏 标题栏用于显示应用程序名和所打开的文件名, 标题栏的颜色可以表明对应窗口是否被激活。菜单栏包 括文件、编辑、显示、插入、工程、编译、工具、窗口 和帮助九项主菜单,包含了从源代码的编辑、界面设计 、程序调试和编译运行在内的所有功能。工具栏列出了 常用的菜单命令功能和对象方法。工具栏的下面是两个 窗口,一个是工作区窗口,用于列出工程中的各种对象 ,一个是源代码编辑窗口,用于各个对象的程序设计。 输出窗口显示项目建立过程中所产生的各种信息。屏幕 底端是状态栏,它给出当前操作或所选择命令的提示信 息。2.1.2 应用程序工程的建立方法 lVisual C+提供了一种称为App Wizard的工具,利 用该工具,用户可以方便地按照自己的需要创建符合需 要的应用程序框架。在这个基础上,用户可以进一步将 自己编写的程序加入到这个框架中,实现用户程序的功 能。下面介绍建立VcApp应用程序框架的方法,其它应 用程序的方法都与此类似。l第一步:启动Visual C+,选择工程方法l 从开始菜单中选择 Visual C+,进入Visual C+ 集成环境。从文件菜单中选择新建(New)命令,2.1.2 应用程序工程的建立方法 l弹出图2-2对话框。切换到工程(Projects) 标签,项目类型选择MFC AppWizard(exe),输 入工程的名字(如VcApp),选择项目放置的位 置,然后单击“确定”按钮。图2-2 Visual C+的New对话框 2.1.2 应用程序工程的建立方法 l第二步:设置应用程序的特性。l这些设置包括六个问题,每一个问题都有不同的选 项供选择。一个问题选择完后,通过“下一步”(Next )选择下一个问题,直到六个问题选择完毕。还可以通 过“上一步”(Back)返回上一个问题重新选择。下面继 续上面的例子,在单击“确定”按钮后,弹出第一个问 题窗口,如图2-3所示。l第一个问题是建立什么类型的应用程序,有三个选 项:单个文档(Single document)、多重文档(Multiple document)和基本对话(Dialog based)。2.1.2 应用程序工程的建立方法 l单个文档应用程序主窗口中只有一个窗口,多重文档可 以在主窗口中开多个子窗口,基本对话主窗口是一个对话框 。例中选择单个文档,单击“确定”,进入下一个问题,如 图2-4所示。l第二个问题是数据库的支持,是否用ODBC存取数据库 ,有四个选项:不包括数据库的支持(None)、仅包含 ODBC头文件(Header files only)、指定一个数据库但没有 文件支持和指定一个数据库但需要文件支持。当选择了后两 项,则需要用户选择一个已经建立的数据库。例中不需要数 据库支持,选择第一个选项“否”,进入第三个问题,如图 2-5所示 图2-3 第一个问题:选择应用程序的类型 图2-4 第二个问题:选择是否要用ODBC支持 l第三个问题是对ActiveX的支持。有五个选项: (1)没有对ActiveX的支持; (2)ActiveX容器,它可以包含链接和嵌入对象。容器 不能为其它的ActiveX程序提供支持,它只能维护嵌入对象 ; (3)微型服务器(Mini-server),应用程序不能独立 运行,只能被调用为其它程序建立ActiveX对象。 (4)完整服务器(Full-server),它能够独立运行, 并能够为其它应用程序建立ActiveX对象。 (5)容器和服务器,一个应用程序可以同时是容器和 服务器。l在例子中,选择第一个选项,没有对ActiveX的支持, 单击“下一个”(Next)进入下一个问题。 图2-5 第三个问题:选择是否对ActiveX的支持 第四个问题是应用程序的特性和高级选项,如下图 图2-6 应用程序的特性和高级选项 例中全部采用默认选项,进入下一个问题。 第五个问题是项目的风格、原文件注释和MFC库类型 ,如图2-7所示。 在例子中全部采用默认选项,进入第六个问题。 第六个问题是确定类名和文件名,如图2-8所示。基于第一个问题到第五个问题的回答,AppWizard 会把将要建立的新类的名称通知用户。AppWizard将为应 用程序建立四个新类,CVcAppApp是应用程序类,它是 CWinApp的派生类。CMainFrame是一个拥有应用程序主 窗口的类。CVcAppDoc和CVcAppView是该应用程序的文 档和视图类。这些名字用户可以改变。最后单击“完成” (Finish),显示所建项目的信息,单击“确定”后,项目 建立完成。 图2-7 项目的风格、原文件注释和MFC库类型 图2-8 通知MFC产生的类名称 2.1.3 输入源程序进行程序设计 l应用程序项目工程建立以后,就为应用程序的开发建立 了一个框架,这是不输入任何程序代码,对该项目程序进行 编译和运行,可以生成一个完整的窗口程序。用户根据项目 工程中的不同类,输入自己设计的程序代码,完成用户的程 序设计。l例如,从VcApp Classes中找到CVcAppView的 OnDraw()函数,如图2-9所示。双击OnDraw()函数,这时 系统会打开VcAppView.cpp文件,而且光标正置于 OnDraw()函数中,在其中输入下列语句:lpDc-TextOut(30,30,”同学们好,欢迎使用VC+编程! ”);l编译并运行该程序,运行结果如图2-10所示。图2-9 输入程序源代码 图2-10 运行结果 2.2 图形设备接口和图形程序设计 2.2.1 图形设备接口简介 l在Windows系统中,程序都是通过一个叫做图 形设备接口(GDI, Graphics Device Interface)的抽象接口 和硬件打交道,Windows会自动将设备环境表映射 到相应的物理设备,并且会提供正确的输入/输出指 令。lGDI是Windows系统核心的三种动态链接库之 一,它管理Windows系统的所有程序的图形输出。 在Windows系统中,GDI向程序员提供了高层次的 绘图函数,只要掌握这些绘图函数,就可以很方便 地进行图形程序设计。 lDC是一个数据结构,当程序向GDI设备中绘图时, 需要访问该设备的DC。MFC将GDI的DC封装在C+类 中,包括CDC类和CDC派生类,这些类中的许多成员都 是对本地GDI绘图函数进行简单封装而形成的内联函数 。lDC的作用就是提供程序与物理设备或者虚拟设备 之间的联系,除此之外,DC还要处理绘图属性的设置 ,如文本的颜色等。程序员可以通过调用专门的GDI函 数修改绘图属性,如SetTextColor()函数。lCDC类是GDI封装在MFC中最大的一个类,它表示 总的DC。表2.1列出了CDC中的一些常用绘图函数。设备描述表(DC, Device Context)表2.1 CDC类中常用绘图函数 函 数描 述使用频率Arc()椭圆弧* BitBlt()把位图从一个DC拷贝到另一个DC* Draw3dRect()绘制三维矩形*DrawDragRect( )绘制用鼠标拖动的矩形* DrawEdge()绘制矩形的边缘* DrawIcon()绘制图标* Ellipse()绘制椭圆* FillRect()绘制用给定的画刷颜色填充矩形* FillRgn()绘制用给定的画刷颜色填充区域*FillSolidRed()绘制用给定的颜色填充矩形*FloodFill()用当前的画刷颜色填充区域*FrameRect()绘制矩形边界*FrameRgn()绘制区域边界*GetBKColor()获取背景颜色*GetCurrentBitmap( )获取所选位图的指针*GetCurrentBrush( )获取所选画刷的指针*GetCurrentFont()获取所选字体的指针*GetCurrentPalette( )获取所选调色板的指针*GetCurrentPen()获取所选画笔的指针*GetCurrentPosition()获取画笔的当前位置*GetDeviceCaps()获取显示设备能力的信息*GetMapMode()获取当前设置映射模式*Getpixel()获取给定像素的RGB颜色值*GetPolyFillMode()获取多边形填充模式*GetTextColor()获取文本颜色*GetTextExtent()获取文本的宽度和高度*GetTextMetrics( )获取当前文本的信息*GetWindow()获取DC窗口的指针*GrayString()绘制灰色文本*LineTo()绘制直线*MoveTo()设置当前画笔位置*Pie()绘制饼图*Polygon()绘制多边形*PolyLine()绘制一组直线*RealizePalette( )将逻辑调色板映射到系统调色板*Rectangle()绘制矩形*RoundRect()绘制圆角矩形*SelectObject()选择GDI绘图对象*SelectPalette()选择逻辑调色板*SelectStockOb ject()选择预定义图形对象*l这些函数的语法和使用可以通过MSDN帮助查询。2.2.2 节主要介绍Windows中基本图形,包括点、直线、圆、圆弧 、矩形、椭圆、扇形、折线等程序设计 SetBkColor()设置背景颜色*SetMapMode( )设置映射模式*SetPixel()把像素设定为给定的颜色*SetTextColor( )设置文本颜色*StretchBlt()把位图从一个DC拷贝到另一个 DC,并根据需要扩展或压缩位图*TextOut()绘制字符串文本*2.2.2 绘制基本图形 (1)画点SetPixel()函数可以在指定的坐标位置按 指定的颜色画点。函数原型说明如下: COLORREF CDC: SetPixel(int X, int Y, COLORREF crColor);l其中(X,Y)为点的坐标位置,crColor参数为点的 颜色值。如果函数调用成功,则函数返回像素的颜 色值,否则返回值为-1。l颜色值通过RGB(Red,Green,Blue)来设置,其中 三个参数取值0255。例如,在VcAPP项目中,在 CVcAppView类中的OnDraw()函数中加入下列画点 语句:/绘制一组彩色点pDC-TextOut(20,20,“point:“); pDC-SetPixel(100,20,RGB(255,0,0);pDC-SetPi
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号