基于VC++的图形编程实现方法.pdf
2 0 0 7 年第1 1 期计算机与现代化J I S U A N J IY UX I A N D A I H U A总第1 4 7 期文章编号:1 0 0 6-2 4 7 5(2 0 0 7)1 1 _ 0 1 3 2-0 3基于V C+的图形编程实现方法何建新(湖南城市学】兜计算机科学系,湖南益阳4 1 3 0 0 0)摘要:在计算机数据处理系统中,绘图是对数据进行加工处理的一种常用方法。在应用程序实现时数据库访问的基础上结合W i n d o 啪图形缩程的基本思想,介绍了使用教据库中数据绘制扇形圈、折线圈等简单圈彤的墙程实现方法。关键词:围彤缡程;G D I;扇彤圈;折线圈中图分类号:1 n 1 1文献标识码:AM e t h o do f G r a p U 璐P r o 呻删l n i n gB a s e d 蚰V C+H EJ i a n x i n(D。p a n m e n t0 fc o m P“断s c i e n c e,H m l 眦c 啼u I l i v 畸,Y i y 舭g4 1 3 0 0 0,c b i 胆)A b s t 髓c t:h 畦l ed a t 8p。o c s 町科砌o fc 0 呷u t e r d r a 埘n gi 8n 衄m e t l l o d 协p m c ed a 组B a s e d t h e 印p U c 娟仰p g m m乳c e s 鸵B l I ed a t a b a 卵,咖n e c t i“gt h eb 曲i ci d e 明dW i T l d o 岬g r a p l l i c 8p m 伊衄删i I l g,t l l i Bp a p e ri n 味晶l 瞄t l I。P 阳唧I I l i“gm e t h o dt h a ta p P b 硎o“p 1 8 铲锄m 酞储埘eo fd 矗t ai nn l ed 8 t 赶蛆此l o 幽¥W 卵咖r 靠d 哪6 9-珏n e,e 地。K e y 州r d s:g 哺p I i c sp r o 舢I I l i I l g;C D I;s e c 研;d 唧e g-U 耻0引言绘图是w i n d o w s 应用程序功能的一个重要组成部分,在计算机数据处理系统中,绘图是对数据进行加工处理的一种常用方式,图形则是以数据为“原料”加工制成的一种。产品”。随着计算机在数据处理领域的广泛应用,许多企事业单位越来越多地运用数据库技术管理各项事务,特别是现在很多大型企业开始建设数据仓库,将他们的信息系统从单纯的操作型向更高层的企业决策型转变。在应用程序实现对数据库访问的基础上,如何用扇形图、折线图等简单图形来反应数据库中数据之间的内在联系,描述数据的变化趋势以便为企业的高层提供决策支持?下面我们将结合实例和w i n d o w s 图形编程的基本思想,介绍V c+中绘制扇形图、折线图等简单图形的编程实现方法。1 图形编程概述1 1W i l I d o 哪图形系统的结构体系由于计算机输出设备和显示设备种类繁多,每种设备又包含许多种不同的型号,w i n d 系统提供了G D I(G r a p h i c sD e“e eI n t e 南c e)的概念,实现应用程序的设备无关性。所谓设备无关性,就是操作系统屏蔽了硬件设备的差异。外部设备的驱动程序由操作系统管理,使用户编程时无需考虑特殊的硬件设置,通过设备描述表(D e v i c ec o n t e x t)建立与应用程序的关联。w i r l d o w e 图形系统的结构体系如图l 所示。戌埘程序lM F c 设鲁描述表llo D I 图形设备接口Il设备驱动程序lI物理硬件I图1w i T 曲 图形系统的结构1 2 生成设备描述表设备描述表简称D c,是用来确定任何设备的G D I 输出位置和形象的属性集合是物理设备的逻辑模型。应用程序的每一次图形操作均参照设备描述表中的属性执行,包含了诸如画笔、域刷、映射模式等一系列绘图属性项。应用程序可调用相应的G D I 函数来修改设备描述表中的属性项以满足不同绘图任收稿日期:2 0 0 6-1 0 彩作者简介:何建新(1 9 7 5-),男,湖南益阳人,湖南城市学院计算机科学系讲师。硕士。研究方向:计算机应用。网络工程。万方数据2 0 0 7 年第1 1 期何建新:基于v C+的图形嫡程实现方法务的需要,而调用C D I 函数绘制具体图形时,图形设备接口将根据设备描述表的规定,连接图形设备的驱动程序来完成具体的绘图工作。各种设备描述表已被封装到c D c 类及其派生类c P a i n t D c,C C l i e n t D c,c w m d o w D c 和c M e t a F i l e D C 等类中。其中c D c 类是通用类,可以按照不同的用途产生下列不同的D c 对象,以完成各种复杂的绘图工作。C D c 类及其派生类的功能如下:c D c 设备描述表类的基类,能实现所有基本的绘图操作。c p a i l l t D c 响应w MP 肿消息以实现绘图操作。C C l i e n t D c 实现用户区内的直接绘图操作,例如用鼠标绘图。C w i n d o w D C 实现整个窗口(包括用户区与非用户区)的绘图操作。c M e t a F i l e D c 专用于实现图元文件的绘图操作。1 3 坐标系统坐标系统分为设备坐标与逻辑坐标。设备坐标是具体的输出设备在输出图形时所使用的坐标,包括屏幕坐标、窗口坐标和用户区坐标三种独立的坐标系统。这些设备坐标系统常用像素点来表示度量的单位。逻辑坐标是程序员调用G D I 函数绘图时使用的坐标,就其本身而言只有数值没有单位。W i n 曲系统调用G D I 函数在输出设备上绘图时最终使用的是设备坐标,因此系统内部必须完成逻辑坐标到某种设备坐标的映射,如何进行映射取决于选定的映射模式。1,4 映射模式映射模式决定了逻辑坐标映射成某种设备坐标时,该坐标系统的坐标轴单位及坐标轴的x 轴方向和Y 轴方向。w i n d o w s 系统定义了M M T E x T、M M T W】s 等8 种映射模式,其中M M J E x T 是默认的映射模式,将每个逻辑单位映射成一个像素,x 轴正向向右。Y 轴向下。1 5 使用字体w i n d o w s 应用程序中经常要进行文本的输人和输出,实际上文本和图形并没有明显的界限,文本事实上也是按照所选用字体的格式画出来的。使用某种字体其步骤如下:首先,生成C F o n t 类的实例;其次,使用C r e a t e F o n n d j 增c t(L O G F O N Tl o 如t)函数初始化字体;w i n d o w B 字体使用L O G F O N T 结构体来描述该结构体包含1 4 个相应成员变量来具体描述字体的特征。最后,调用c D c 的成员函数s e l e c t o b-j e c t()将新字体选人设备描述表,至此就可以使用新字体输出了。使用画笔、画刷的方法和使用字体基本类似。2 图形编程实现方法通过读取数据表中的数据绘制扇形图或折线图,用图形来直观地描述数据库中数据之间的关系及其变化趋势。例如已知s Q L 数据表P r o f e s s i o n 中,存储的是x x x 高等学校从1 9 9 5 年以来各年度专业技术人员中教授、副教授、讲师、助教、见习等专业技术人员数的构成。应用程序在使用M F cO D B C 数据库访问接口实现对数据库访问的基础上,绘制扇形图以反映各年度各种专业技术人员数占该年度全体专业技术人员数的比例;绘制折线图以反映自1 9 9 5 年以来各种专业技术人员数的变化趋势。下面结合该实例简要介绍这两种图形的编程实现方法。2 1 绘扇形图扇形图是用整个圆或椭圆表示总数,用圆内各个扇形的大小表示各部分数据占总数的百分数。通过扇形图可以清楚地表示出各部分数量与总数之间的关系。2 1 l 扇形的计算用P i e(x l,y l。也,y 2,妇,y 3,x 4,y 4)函数绘制扇形图,关键是如何确定扇形圆弧的起始坐标(妇,y 3)和终点坐标(x 4,一)。如果椭圆在屏幕上显示如图2 所示,设椭圆中心坐标为(a,b),(x l,y 1)、(也,y 2)表示其外接矩形。为了绘图方便,假设第一个扇形的圆弧起点()【3,y 3)在椭圆长轴与椭圆的右方交点上。H e 函数并没有完全固定(x 4,一)坐标的位置,只要求这点在扇形的另一条半径所在的射线上,并且离开圆心,为计算方便我们假定这点距圆心的距离为椭圆半长轴k o 第二个及以后的扇形图紧靠前个扇形图绘成,因此其第一对坐标分别为所绘前一个扇形图的第二对坐标。下面是坐标(x 3,y 3)、(x 4,y 4)的计算方法。8=x l+(吐一z 1)2b=y 1+(妒-y 1)2d=n+(也x I)2y 3=b科=8+(也_ 1 1)2。蚺(2 3 1 4 正(f 1 +f 2】+f 3 +f 4】+f 5 )一=b 一(也_ 1 1)2 e i I I(2 3 1 4 矗(f 1 +f 2 +f 3】+f 4】+f 5 )其中:f 1 一f 5 分别表示当年教授、副教授、讲师、助教、见习等专业技术人员数;f s 表示从第一个扇形图到该扇形图所表示的一种或几种专业技术人员数之和。万方数据计算机与现代化2 0 0 7 年第1 l 期 1 +f 2 +f 3】+f 4 );y 4=(i n t)(b-(蛇-x 1)2 e i n(2 3 1 4 岛(f 0 +f 1+f 2 +f 3 +f 4 );c H H n D c s e l e c l O b j e c t(P 1 0 0 p n】);c u e n t D c 鲥t O b j e c t(l j m s h 1 p n】);c l i e m D c P i e(x l,y 1,也,y 2,妇,y 3,“,一);l o o p n=1 0(P n+1;岛=臼+f 1 0 0 p n ;x 3=x 4,y 3=y 4;w l l i l e(1 p n 札,p m E n d o f m e)绘折线图la g e=p D 睁)m _ 珥R e c s e t m 嘶;痧F 0 n 蚰t(”l d”。a g e);i f(h o d(I o 叩n 2 0)J=O)c l i e n t D c,T e 神o u t(x-1 4,3 2 0,母);窗口低端显示年份8 俩t c h(n)读取该种专业技术人员的当前记录数据n d 2p D 0 c-R e c S e t m-(n;b 弛且k;x。x+期p c;y=(i n t)(y 2-(灶珂i n)e e 山);C h e n t D c b n e T o(x。y);p D o c m-P I t s M 0 v e N e 对();1 0 0 p n=l p+1;图4 折线图3 结束语图形是对数据的直观表示。本文结合W i n d o m 图形编程的基本原理,在应用程序实现对数据库访问的基础上,通过读取记录集中的字段数据,介绍了绘制扇形图、折线图两种图形的实现方法。条形图也是反应数据变化的常见图形之一,读者可以结合绘制折线图的方法,将代码稍加修改便可实现条形图的绘制。参考文献:1】吴星,沈琳M F c 如何实现绘图功能 J 福建电脑,2 0 0 2(1 2);4 4 4 5 2】黄维通,姚瑞霞v i 8 u a lc+程序设计教程 M 北京:机械工业出版社,2 0 0 5 3】范晓平跟着实例学、他+6 0 访问数据库绘图制表 M】北京:北京航空航天大学出版社,2 0 0 3 4】李俊v i 目u 且lc+6,0 实用教程 M】北京:人民邮电出版社,2 0 0 0 万方数据基于VC+的图形编程实现方法基于VC+的图形编程实现方法作者:何建新,HE Jian-xin作者单位:湖南城市学院计算机科学系,湖南,益阳,413000刊名:计算机与现代化英文刊名:COMPUTER AND MODERNIZATION年,卷(期):2007(11)被引用次数:1次 参考文献(4条)参考文献(4条)1.李俊 Visual C+6.0实用教程 20002.范晓平 跟着实例学VC+6.0访问数据库绘图制表 20033.黄维通;姚瑞霞 Visual C+程序设计教程 20054.吴星;沈琳 MFC如何实现绘图功能期刊论文-福建电脑 2002(12)本文读者也读过(10条)本文读者也读过(10条)1.唐钟.虢仲平.TANG Zhong.GUO Zhong-ping 基于MAS的分布式控制软件系统模型研究期刊论文-计算机工程与设计2008,29(18)2.付志峰.陈建平.邓宗伟.伍振志 声波法在隧道质量检测中的应用研究会议论文-20033.张桂荣.姚迪 基于VC和OpenGL三维图形的开发期刊论文-齐齐哈尔大学学报(自然科学版)2002,18(4)4.陈红伟.岳学峰.CHEN Hong-wei.YUE Xue-feng 探地雷达在隧道质量检测中的应用期刊论文-山西建筑2010,36(29)5.赵巍.刘建红.蔡士杰.Zhao Wei.Liu Jianhong.Cai Shijie 基于图形识别的建筑图钢筋自动统计系统CSC期刊论文-计算机工程与应用2001,37(2)6.范晓平.方阳 VC+.NET图形编程绘K线图和条形图期刊论文-电脑编程技巧与维护2009(5)7.张文新 使用ActiveX控件在浏览器中生成数据驱动的统计图表期刊论文-电脑开发与应用2001,14(9)8.原野.沈钧毅.何姝 SVG技术在统计图表中的应用研究期刊论文-计算机工程与应用2002,38(17)9.黄河清.李治柱 基于动态数据库的多国语言网站开发期刊论文-计算机工程2005,31(2)10.李沫.贾俊凤.LI Mo.JIA Jun-feng 地质雷达技术在隧道质量检测中的应用期刊论文-工程质量2007(2)引证文献(1条)引证文献(1条)1.刘慧杰.靳海亮 基于VC+的OpenGL三维图形开发设计期刊论文-计算机与数字工程 2009(7)本文链接:http:/