构建仪表、图表控件的绘制框架

http://tech.ddvip.com   2007年03月17日    社区交流

本文详细介绍构建仪表、图表控件的绘制框架

  本文示例源代码或素材下载

  开发环境: VS2003 + Windows XP SP2

  测试环境: Windows XP SP2

  Demo截图

  

  编写图形相关的控件需要完成两部分:1 绘制;2 与窗口类(泛指)集成使之成为控件。本文重点在于“绘制”部分,提出一个较灵活的框架。用VC的GDI+实现框架,并在Demo中简单封装成圆表和直表控件。图一是要实现的目标(圆表、直表等仪表,指示灯,图表,旋钮,滑块等),由这些目标,经需求分析后,设计出框架。

  图一

  框架的建立

  “如果说我比别人看得更远些,那是因为我站在了巨人的肩上”。.Net上开源图表控件比较多,在这里我们分析一下MS Graph Demo。图二 是其绘制Pie图表的类图。

  图二 MS Graph Demo绘制Pie图表的结构

  PieSlice表示Pie中的单个扇形,_value用来计算百分比,_color是此扇形的填充颜色。

  PieSliceCollection是PieSlice集合。

  PieGraph类内置一个PieSliceCollection对象,类中其它的数据是描述Pie整体的数据(宽高,边框宽度,背景颜色……)。

  PieGraphRenderer类通过 DrawGraph函数绘制Pie图,类内置一个PieGraph对象。

  此结构有诸如数据结构和算法的分离等的优点,但也有它的局限性。1 它的框架是建立在功能分类上的,如,Pie图、Bar图。PieSlice中不仅有功能数据_value还有外观数据_color。假如不再填充纯色,而是填充图像,那么就必须修改PieSlice,增加_image:Image属性; PieGraphRenderer也需相应的修改。假设将上述修改扩展到Pie图表以外的其它类型的图表,如:Bar图表、A图表、B图表,那么BarSlice、ASlice、BSlice,及三者相应的Renderer类也必须修改,工作量多且重复。2 在应用过程中,当需要把Pie图对象转换成Bar图对象时,MS Graph Demo的现有框架便不能实现。

作者:么硕    责编:豆豆技术应用

正在加载评论...