近日,在编写一个统计程序的时候,希望通过条形图、饼图的形式形象地展现统计数据,为此,专门到sourceforge、codeproject等开源网站阅读查找有关资料,在这过程当中,阅读了一份源码,感觉很多东西都可以借鉴,只不过,其最多只支持10个条形图的显示,因为画布仅有200*200,每个条形图占了10,间距又占了10。对于这一点,笔者感觉不甚满意,于是决定在参考借鉴原有代码的基础上,做一个更加通用的绘图程序。当然,因时间有限,笔者只做了针对条形图、饼图的实现。至于其他图形,有兴趣的朋友不妨自己实现。本篇文章将介绍条形图的实现,在另一篇文章中将介绍饼图的实现。
为实现这个简单的绘图程序,首先构建了一个GraphDrawing项目工程。整个程序的设计思路相对较简单,通过类BarGraph来实现对条形图的绘制,通过WinForm窗体来实现对图形数据的输入及输出。此外,还特别增加了一个工具类Utils,里面包含了公共静态方法,当前用来获取图形绘制的颜色列表。
整个绘图程序的实现,均是通过C#中的GDI+来处理的,只要充分利用GDI+中的各种方法,绘制这么一个相对简单的图形也就不成问题了。绘制条形图大体经过以下几个步骤:
(1)创建Graphics对象实例;
(2)设置图形及文本的属性;
(3)设置画布和边框;
(4)绘制标题文本;
(5)循环绘制条形图;
(6)绘制X及Y坐标的线条及文本;
(7)绘制图例。
以下是BarGraph类的代码示例:
在WinForm中,调用也非常简单,代码示例如下:
最终的条形图绘制界面效果如下图所示:
以上是关于条形图绘制的粗略介绍,该绘图程序可适应窗体大小的变化。在后面笔者将会对该程序作进一步完善,以实现对饼图的绘制。同时,需要说明的是,本绘图程序的部分实现思路参考了相关源码,在此对相关源码的作者表示感谢。