ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:57.27KB ,
资源ID:30413861      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/30413861.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(如何在C#的WinForm中制作饼状图和柱状图.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

如何在C#的WinForm中制作饼状图和柱状图.docx

1、如何在C#的WinForm中制作饼状图和柱状图如何在C#的WinForm中制作饼状图和柱状图作者:佚名 文章来源:不详 点击数: 105 更新时间:2006-6-21 热 当我们的软件需要各种饼状图和柱状图来表示数据时,我们或许会想到用Offices中的图形控件或是第三方控件,但现在的第三方控件大都需要注册,有些免费的控件会有开发商的标记等。而对于使用Offices的图形控件来说,并不能在程序中得于很好控制,其使用的简易程度也较低,所以在这我给出在C#中使用GDI+实现饼状图和柱状图跟数据库联接显示数据的方法。using System;using System.IO;/用于文件存取using

2、System.Data;/用于数据访问using System.Drawing;/提供画GDI+图形的基本功能using System.Drawing.Text;/提供画GDI+图形的高级功能using System.Drawing.Drawing2D;/提供画高级二维,矢量图形功能using System.Drawing.Imaging;/提供画GDI+图形的高级功能namespace BaseLayerpublic class PieChartpublic PieChart()/Render是图形大标题,图开小标题,图形宽度,图形长度,饼图的数据集和饼图的数据集要表示出来的数据public

3、 Image Render(string title, string subTitle, int width, int height, DataSet chartData,int DataLine)const int SIDE_LENGTH = 400;const int PIE_DIAMETER = 200;DataTable dt = chartData.Tables0;/通过输入参数,取得饼图中的总基数float sumData = 0;foreach(DataRow dr in dt.Rows)sumData += Convert.ToSingle(drDataLine);/产生一个i

4、mage对象,并由此产生一个Graphics对象Bitmap bm = new Bitmap(width,height);Graphics g = Graphics.FromImage(bm);/设置对象g的属性g.ScaleTransform(Convert.ToSingle(width)/SIDE_LENGTH,(Convert.ToSingle(height)/SIDE_LENGTH);g.SmoothingMode = SmoothingMode.Default;g.TextRenderingHint = TextRenderingHint.AntiAlias;/画布和边的设定g.Cl

5、ear(Color.White);g.DrawRectangle(Pens.Black,0,0,SIDE_LENGTH-1,SIDE_LENGTH-1);/画饼图标题g.DrawString(title,new Font(Tahoma,14),Brushes.Black,new PointF(5,5);/画饼图的图例g.DrawString(subTitle,new Font(Tahoma,12),Brushes.Black,new PointF(7,35);/画饼图float curAngle = 0;float totalAngle = 0;for(int i=0;idt.Rows.Cou

6、nt;i+)curAngle = Convert.ToSingle(dt.RowsiDataLine) / sumData * 360;g.FillPie(new SolidBrush(ChartUtil.GetChartItemColor(i),100,65,PIE_DIAMETER,PIE_DIAMETER,totalAngle,curAngle);g.DrawPie(Pens.Black,100,65,PIE_DIAMETER,PIE_DIAMETER,totalAngle,curAngle);totalAngle += curAngle;/画图例框及其文字g.DrawRectangle

7、(Pens.Black,200,300,199,99);g.DrawString(图表说明,new Font(Tahoma,12,FontStyle.Bold),Brushes.Black,new PointF(200,300);/画图例各项PointF boxOrigin = new PointF(210,330);PointF textOrigin = new PointF(235,326);float percent = 0;for(int i=0;idt.Rows.Count;i+)g.FillRectangle(new SolidBrush(ChartUtil.GetChartIte

8、mColor(i),boxOrigin.X,boxOrigin.Y,20,10);g.DrawRectangle(Pens.Black,boxOrigin.X,boxOrigin.Y,20,10);percent = Convert.ToSingle(dt.RowsiDataLine) / sumData * 100;g.DrawString(dt.Rowsi1.ToString() + - + dt.Rowsi0.ToString() + ( + percent.ToString(0) + %),new Font(Tahoma,10),Brushes.Black,textOrigin);bo

9、xOrigin.Y += 15;textOrigin.Y += 15;/回收资源g.Dispose();return (Image) bm;/画条形图public class BarChartpublic BarChart()/Render是图形大标题,图开小标题,图形宽度,图形长度,饼图的数据集和饼图的数据集public Image Render(string title, string subTitle, int width, int height, DataSet chartData)const int SIDE_LENGTH = 400;const int CHART_TOP = 75

10、;const int CHART_HEIGHT = 200;const int CHART_LEFT = 50;const int CHART_WIDTH = 300;DataTable dt = chartData.Tables0;/计算最高的点float highPoint = 0;foreach(DataRow dr in dt.Rows)if(highPointConvert.ToSingle(dr0)highPoint = Convert.ToSingle(dr0);/建立一个Graphics对象实例Bitmap bm = new Bitmap(width,height);tryGr

11、aphics g = Graphics.FromImage(bm);/设置条图图形和文字属性g.ScaleTransform(Convert.ToSingle(width)/SIDE_LENGTH,(Convert.ToSingle(height)/SIDE_LENGTH);g.SmoothingMode = SmoothingMode.Default;g.TextRenderingHint = TextRenderingHint.AntiAlias;/设定画布和边g.Clear(Color.White);g.DrawRectangle(Pens.Black,0,0,SIDE_LENGTH-1

12、,SIDE_LENGTH-1);/画大标题g.DrawString(title,new Font(Tahoma,14),Brushes.Black,new PointF(5,5);/画小标题g.DrawString(subTitle,new Font(Tahoma,12),Brushes.Black,new PointF(7,35);/画条形图float barWidth = CHART_WIDTH / (dt.Rows.Count * 2);PointF barOrigin = new PointF(CHART_LEFT + (barWidth / 2),0);float barHeight

13、 = dt.Rows.Count;for(int i=0;idt.Rows.Count;i+)barHeight = Convert.ToSingle(dt.Rowsi0) * 200 / highPoint * 1;barOrigin.Y = CHART_TOP + CHART_HEIGHT - barHeight;g.FillRectangle(new SolidBrush(ChartUtil.GetChartItemColor(i),barOrigin.X,barOrigin.Y,barWidth,barHeight);barOrigin.X = barOrigin.X + (barWi

14、dth * 2);/设置边g.DrawLine(new Pen(Color.Black,2),new Point(CHART_LEFT,CHART_TOP),new Point(CHART_LEFT,CHART_TOP + CHART_HEIGHT);g.DrawLine(new Pen(Color.Black,2),new Point(CHART_LEFT,CHART_TOP + CHART_HEIGHT),new Point(CHART_LEFT + CHART_WIDTH,CHART_TOP + CHART_HEIGHT);/画图例框和文字g.DrawRectangle(new Pen(

15、Color.Black,1),200,300,199,99);g.DrawString(图表说明,new Font(Tahoma,12,FontStyle.Bold),Brushes.Black,new PointF(200,300);/画图例PointF boxOrigin = new PointF(210,330);PointF textOrigin = new PointF(235,326);for(int i=0;idt.Rows.Count;i+)g.FillRectangle(new SolidBrush(ChartUtil.GetChartItemColor(i),boxOrig

16、in.X,boxOrigin.Y,20,10);g.DrawRectangle(Pens.Black,boxOrigin.X,boxOrigin.Y,20,10);g.DrawString(dt.Rowsi1.ToString() + - + dt.Rowsi0.ToString(),new Font(Tahoma,10),Brushes.Black,textOrigin);boxOrigin.Y += 15;textOrigin.Y += 15;/输出图形g.Dispose();return bm;catchreturn bm;public class ChartUtilpublic Cha

17、rtUtil()public static Color GetChartItemColor(int itemIndex)Color selectedColor;switch(itemIndex)case 0:selectedColor = Color.Blue;break;case 1:selectedColor = Color.Red;break;case 2:selectedColor = Color.Yellow;break;case 3:selectedColor = Color.Purple;break;default:selectedColor = Color.Green;brea

18、k;return selectedColor;叶子当我们的软件需要各种饼状图和柱状图来表示数据时,我们或许会想到用Offices中的图形控件或是第三方控件,但现在的第三方控件大都需要注册,有些免费的控件会有开发商的标记等。而对于使用Offices的图形控件来说,并不能在程序中得于很好控制,其使用的简易程度也较低,所以在这我给出在C#中使用GDI+实现饼状图和柱状图跟数据库联接显示数据的方法。 using System; using System.IO;/用于文件存取 using System.Data;/用于数据访问 using System.Drawing;/提供画GDI+图形的基本功能 u

19、sing System.Drawing.Text;/提供画GDI+图形的高级功能 using System.Drawing.Drawing2D;/提供画高级二维,矢量图形功能 using System.Drawing.Imaging;/提供画GDI+图形的高级功能 namespace BaseLayer public class PieChart public PieChart() /Render是图形大标题,图开小标题,图形宽度,图形长度,饼图的数据集和饼图的数据集要表示出来的数据 public Image Render(string title, string subTitle, int

20、width, int height, DataSet chartData,int DataLine) const int SIDE_LENGTH = 400; const int PIE_DIAMETER = 200; DataTable dt = chartData.Tables0; /通过输入参数,取得饼图中的总基数 float sumData = 0; foreach(DataRow dr in dt.Rows) sumData += Convert.ToSingle(drDataLine); /产生一个image对象,并由此产生一个Graphics对象 Bitmap bm = new

21、Bitmap(width,height); Graphics g = Graphics.FromImage(bm); /设置对象g的属性 g.ScaleTransform(Convert.ToSingle(width)/SIDE_LENGTH,(Convert.ToSingle(height)/SIDE_LENGTH); g.SmoothingMode = SmoothingMode.Default; g.TextRenderingHint = TextRenderingHint.AntiAlias; /画布和边的设定 g.Clear(Color.White); g.DrawRectangle

22、(Pens.Black,0,0,SIDE_LENGTH-1,欢迎光临学网,收藏本篇文章 1 2 3 4 5 6$False$ SIDE_LENGTH-1); /画饼图标题 g.DrawString(title,new Font(Tahoma,14),Brushes.Black,new PointF(5,5); /画饼图的图例 g.DrawString(subTitle,new Font(Tahoma,12),Brushes.Black,new PointF(7,35); /画饼图 float curAngle = 0; float totalAngle = 0; for(int i=0;idt

23、.Rows.Count;i+) curAngle = Convert.ToSingle(dt.RowsiDataLine) / sumData * 360; g.FillPie(new SolidBrush(ChartUtil.GetChartItemColor(i),100,65,PIE_DIAMETER,PIE_DIAMETER,totalAngle,curAngle); g.DrawPie(Pens.Black,100,65,PIE_DIAMETER,PIE_DIAMETER,totalAngle,curAngle); totalAngle += curAngle; /画图例框及其文字

24、g.DrawRectangle(Pens.Black,200,300,199,99); g.DrawString(图表说明,new Font(Tahoma,12,FontStyle.Bold),Brushes.Black,new PointF(200,300); /画图例各项 PointF boxOrigin = new PointF(210,330); PointF textOrigin = new PointF(235,326); float percent = 0; for(int i=0;idt.Rows.Count;i+) g.FillRectangle(new SolidBrush

25、(ChartUtil.GetChartItemColor(i),boxOrigin.X,boxOrigin.Y,20,10); g.DrawRectangle(Pens.Black,boxOrigin.X,boxOrigin.Y,20,10); percent = Convert.ToSingle(dt.RowsiDataLine) / sumData * 100; g.DrawString(dt.Rowsi1.ToString() + - + dt.Rowsi0.ToString() + ( + percent.ToString(0) + %),new Font(Tahoma,10),文章整

26、理:学网 (本站) 1 2 3 4 5 6Brushes.Black,textOrigin); boxOrigin.Y += 15; textOrigin.Y += 15; /回收资源 g.Dispose(); return (Image) bm; /画条形图 public class BarChart public BarChart() /Render是图形大标题,图开小标题,图形宽度,图形长度,饼图的数据集和饼图的数据集 public Image Render(string title, string subTitle, int width, int height, DataSet cha

27、rtData) const int SIDE_LENGTH = 400; const int CHART_TOP = 75; const int CHART_HEIGHT = 200; const int CHART_LEFT = 50; const int CHART_WIDTH = 300; DataTable dt = chartData.Tables0; /计算最高的点 float highPoint = 0; foreach(DataRow dr in dt.Rows) if(highPointConvert.ToSingle(dr0) highPoint = Conver

28、t.ToSingle(dr0); /建立一个Graphics对象实例 Bitmap bm = new Bitmap(width,height); try Graphics g = Graphics.FromImage(bm); /设置条图图形和文字属性 g.ScaleTransform(Convert.ToSingle(width)/SIDE_LENGTH,(Convert.ToSingle(height)/SIDE_LENGTH); g.SmoothingMode = Smoothing欢迎光临学网,收藏本篇文章 1 2 3 4 5 6 Mode.Default; g.TextRenderi

29、ngHint = TextRenderingHint.AntiAlias; /设定画布和边 g.Clear(Color.White); g.DrawRectangle(Pens.Black,0,0,SIDE_LENGTH-1,SIDE_LENGTH-1); /画大标题 g.DrawString(title,new Font(Tahoma,14),Brushes.Black,new PointF(5,5); /画小标题 g.DrawString(subTitle,new Font(Tahoma,12),Brushes.Black,new PointF(7,35); /画条形图 float barWidth = CHART_WIDTH / (dt.Rows.Count * 2); PointF barOrigin = new PointF(CHART_LEFT + (barWidth / 2),0); float barHeight = dt.Rows.Count; for(int i=0;idt.Rows.Count;i+) barHeight

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1