利用C#实现条形图、饼图的绘制(一)

news/2024/7/8 4:55:56 标签: c#, graph, string, winform, 图形, gdi+

    近日,在编写一个统计程序的时候,希望通过条形图、饼图的形式形象地展现统计数据,为此,专门到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中,调用也非常简单,代码示例如下:

最终的条形图绘制界面效果如下图所示:

    以上是关于条形图绘制的粗略介绍,该绘图程序可适应窗体大小的变化。在后面笔者将会对该程序作进一步完善,以实现对饼图的绘制。同时,需要说明的是,本绘图程序的部分实现思路参考了相关源码,在此对相关源码的作者表示感谢。


http://www.niftyadmin.cn/n/1863404.html

相关文章

利用C#实现条形图、饼图的绘制(二)

继前一篇文章提到关于使用C#绘制条形图的思路之后,这里接着介绍绘制饼图的思路。本篇文章所涉及的源代码是在前面的基础上完成的,在本文的最后,将会提供本实例的完整代码下载地址,有兴趣的朋友可以下载。 言归正传,…

java 删除文件 文件夹_【转】Java删除文件夹和文件

原文网址:http://kxjhlele.iteye.com/blog/323657以前在javaeye看到过关于Java操作文件的一篇文章,写的很好,但找了半天也没找到,就把找到底几篇文章整理一下,做个总结,算是一个学习备份……1,验…

好习惯影响着开发效率

昨日跟同事坐在一起吃饭,聊起软件开发人员在开发效率等方面的话题,颇有感触。软件开发行业,并不是一个轻松的行业。因为发展得太快,技术更新得太快,要学习要掌握并将其应用到实际的开发工作当中的东西太多。对此&#…

一周年聚会之感想

本月29号,离本人大学毕业将近一周年的时候,回到了熟悉的大学校园,参加班级聚会。 时光匆匆,不知不觉,竟是一年了。聚会,触动了我的心灵深处,勾起了我对大学生活的美好记忆。曾经65人的大家庭…

java android 服务器_[Java教程]Android访问服务器

[Java教程]Android访问服务器0 2014-07-26 00:01:50做cocos2dx已经有好一段时间了,在这段时间里,也不断接触android。一直没有时间写下自己的工作经历,今天抽点时间记下一段。关于android访问服务器获取数据的方法:传输协议使用ht…

提高生产力很重要——有感于《卓有成效的程序员》一书

近日,花了几天时间读完了《卓有成效的程序员》精选版一书,又花了几天时间去细细揣摩、细细品味其中的一些精辟要点,深感作为一名软件开发人员,提高软件开发生产力的重要性。谨以此文记下个人的一些感受。 1、在恰当的时候让一切…

java flex上传_Flex+Java多文件上传

[flex与java 和传统的JSP一样,在flex中,有的时候也需要实现文件上传和下载的功能,但是在flex里文件的上传和下载的实现相对来说比较复杂,如何实 ...]结合网上的资料修改一下,实现了两种不同界面的多文件上传Flex端代…

VC中关于字符串处理问题小结

在Visual C中,对字符串的处理是编程中经常遇到的问题。笔者在实际的工作中就经常性地碰到这类问题,且常常游走于CString、char及其相互之间转换的情形当中,因笔者在C方面也是刚刚起步,对字符串的处理还真给笔者出了不少难题。不过…