最近因为项目需要,需要为客户的统计数据生成图表,包括柱状图和饼图。我找来了Dundas Software的Dundas Chart,大家可以上它的网站http://www.dundas.com/查看最新版本的信息以及下载该软件它确实是一个功能强大的组件,而且用户友好性方面很值得国产软件学习。

闲话少说,进入该软件的使用。先安装该软件,安装后它包括两个非常有用的功能,一个是做的非常类似msdn的帮助文档,相信对.net程序员非常友好,就当是msdn用吧。另外一个是它的sample,这是一个完整的.net解决方案,你可以在IIS里面配置个网站来访问它。接着你就可以开始通过sample来了解和学习Dundas Chart的强大功能了。

下面给个我学习中生成的图片。

下面是程序部分源码

private void Page_Load(object sender, System.EventArgs e)
        {
            // 在此处放置用户代码以初始化页面
            if(!this.IsPostBack)
            {
                double industry1 = 19.32;
                double industry2 = 361.38;
                double industry3 = 501.51;
                double industryfull = 1020.05;
                double fixedasserts = 216.13;
                double retailtrade = 32.06;
                double foreigntrade = 443.34;
                double foreigncapital = 3.41;
                //------------------------生产统计图表-------------------------
                Dundas.Charting.WebControl.Chart Chart1 = new Dundas.Charting.WebControl.Chart();
                Chart1.BackImage = this.Server.MapPath("cn/images/target/back_img.gif");
                Chart1.BackGradientEndColor = Color.White;
                Chart1.BorderLineColor = Color.White;
                Chart1.BorderLineWidth = 0;
                Chart1.BorderSkin.FrameBackColor = Color.MediumTurquoise;
                Chart1.BorderSkin.FrameBackGradientEndColor = Color.Teal;
                Chart1.Palette = ChartColorPalette.SemiTransparent;
                Chart1.Width = 545;
                Chart1.Height = 215;
                Chart1.ImageType = ChartImageType.Jpeg;
                Chart1.AntiAliasing = AntiAliasing.All;
                Chart1.Titles.Add("Default");
                Chart1.Titles[0].Text = "2008年12月火星经济指标";
                Chart1.Titles[0].Alignment = ContentAlignment.TopCenter;
                Chart1.Titles[0].Font = new Font("黑体", 12, FontStyle.Bold);
                Chart1.Titles[0].Color = Color.FromArgb(72, 72, 72);
                饼图("一产", "二产", "三产")#region 饼图("一产", "二产", "三产")
                //设置图表区域样式1("一产", "二产", "三产")
                Chart1.ChartAreas.Add("Default");
                ChartArea ChartArea1 = Chart1.ChartAreas["Default"];
                ChartArea1.Area3DStyle.Enable3D = true;
                ChartArea1.Area3DStyle.Light = LightStyle.None;
                ChartArea1.Area3DStyle.XAngle = 70;
                ChartArea1.Area3DStyle.YAngle = 60;
                ChartArea1.BorderWidth = 0;
                ChartArea1.BackColor = Color.Transparent;
                ChartArea1.Position.Auto = false;
                ChartArea1.Position.Width = 50;
                ChartArea1.Position.Height = 30;
                ChartArea1.Position.X = 65;
                ChartArea1.Position.Y = 10;
                //设置图例区域样式1("一产", "二产", "三产")
                Legend Legend1 = Chart1.Legends["Default"];
                Legend1.Alignment = StringAlignment.Center;
                Legend1.BorderWidth = 1;
                Legend1.Font = new Font("幼圆", 8, FontStyle.Bold);
                Legend1.BackColor = Color.Transparent;
                Legend1.FontColor = Color.Black;
                Legend1.DockInsideChartArea = true;
                Legend1.DockToChartArea = "Default";
                //绑定数据1("一产", "二产", "三产")
                double[] yValues = {industry1, industry2, industry3};
                string[] xValues = {"一产", "二产", "三产"};
                Chart1.Series.Add("Series1");
                Series Series1 = Chart1.Series["Series1"];
                Series1.Points.DataBindXY(xValues, yValues);
                Series1.ChartType = "Pie";
                Series1.BorderColor = Color.White;
                Series1.Palette = ChartColorPalette.EarthTones;
                Series1["LabelStyle"] = "Disabled";
                Series1.ChartArea = "Default";
                Series1.Legend = "Default";
                #endregion
                饼图("投资", "消费", "出口")#region 饼图("投资", "消费", "出口")
                //设置图表区域样式2("投资", "消费", "出口")
                Chart1.ChartAreas.Add("Second");
                ChartArea ChartArea2 = Chart1.ChartAreas["Second"];
                ChartArea2.Area3DStyle.Enable3D = true;
                ChartArea2.Area3DStyle.Light = LightStyle.None;
                ChartArea2.Area3DStyle.XAngle = 70;
                ChartArea2.Area3DStyle.YAngle = 60;
                ChartArea2.BorderWidth = 0;
                ChartArea2.BackColor = Color.Transparent;
                ChartArea2.Position.Auto = false;
                ChartArea2.Position.Width = 50;
                ChartArea2.Position.Height = 30;
                ChartArea2.Position.X = 65;
                ChartArea2.Position.Y = 32;
                //设置图例区域样式2("投资", "消费", "出口")
                Legend Legend2 = new Legend("Second");
                Chart1.Legends.Add(Legend2);
                Legend2.Alignment = StringAlignment.Center;
                Legend2.BorderWidth = 1;
                Legend2.BackColor = Color.Transparent;
                Legend2.Font = new Font("幼圆", 8, FontStyle.Bold);
                Legend2.FontColor = Color.Black;
                Legend2.DockInsideChartArea = true;
                Legend2.DockToChartArea = "Second";
                //绑定数据2("投资", "消费", "出口")
                double[] yValues2 = {fixedasserts, retailtrade, foreigntrade};
                string[] xValues2 = {"投资", "消费", "出口"};
                Chart1.Series.Add("Series2");
                Series Series2 = Chart1.Series["Series2"];
                Series2.Points.DataBindXY(xValues2, yValues2);
                Series2.ChartType = "Pie";
                Series2.BorderColor = Color.White;
                Series2.Palette = ChartColorPalette.Pastel;
                Series2["LabelStyle"] = "Disabled";
                Series2.ChartArea = "Second";
                Series2.Legend = "Second";
                #endregion
                柱状图#region 柱状图
                double[] yTitle3 = {industry1, industry2,industryfull,0, industry3, fixedasserts, retailtrade, foreigntrade, foreigncapital};
                double x = MaxValue(yTitle3)/10;
                //设置图表区域样式3
                Chart1.ChartAreas.Add("3nd");
                ChartArea ChartArea3 = Chart1.ChartAreas["3nd"];
                ChartArea3.Area3DStyle.Enable3D = false;
                ChartArea3.Area3DStyle.Light = LightStyle.Realistic;
                ChartArea3.AxisX.LineColor = Color.FromArgb(64,64,64);
                ChartArea3.AxisX.LabelStyle.Font = new Font("幼圆", 8, FontStyle.Bold);
                ChartArea3.AxisX.LabelStyle.FontColor = Color.Black;
                ChartArea3.AxisX.LabelStyle.OffsetLabels = false;
                ChartArea3.AxisX.LabelsAutoFit = false;
                ChartArea3.AxisX.MajorGrid.Enabled = false;
                ChartArea3.AxisX.MajorTickMark.Enabled = true;
                ChartArea3.AxisX.MajorTickMark.LineColor = Color.Transparent;
                ChartArea3.AxisX.MajorTickMark.Interval = 4;
                ChartArea3.AxisY.CustomLabels.Add(0, MaxValue(yTitle3)*2.3, "亿元");
                ChartArea3.AxisY.LabelStyle.Enabled = true;
                ChartArea3.AxisY.LabelStyle.FontAngle = 0;
                ChartArea3.AxisY.LabelStyle.Font = new Font("幼圆", 10, FontStyle.Bold);
                ChartArea3.AxisY.MajorGrid.Enabled = false;
                ChartArea3.AxisY.MajorTickMark.Enabled = false;
                ChartArea3.BorderWidth = 0;
                ChartArea3.BackColor = Color.Transparent;
                ChartArea3.Position.Auto = false;
                ChartArea3.Position.Width = 80;
                ChartArea3.Position.Height = 67;
                ChartArea3.Position.X = 5;
                ChartArea3.Position.Y = 28;
                //设置图例区域样式3
                Legend Legend3 = new Legend("3nd");
                Chart1.Legends.Add(Legend3);
                Legend3.Enabled = false;
                Legend3.DockToChartArea = "3nd";
                //绑定数据3
                double[] yValues3 = {industry1+x, industry2+x,industryfull+x,0, industry3+x, fixedasserts+x, retailtrade+x, foreigntrade+x, foreigncapital+x};
                string[] xValues3 = {"第一产业", "第二产业", "工业总产值", " ", "第三产业", "固定资产投资", "消费零售总额", "外贸出口", "实际利用外资"};
                Chart1.Series.Add("Series3");
                Series Series3 = Chart1.Series["Series3"];
                Series3.Points.DataBindXY(xValues3, yValues3);
                Series3.ChartType = "Column";
                Series3.BorderColor = Color.White;
                Series3.BackGradientType = GradientType.VerticalCenter;
                Series3.BackGradientEndColor = Color.Khaki;
                Series3.Color = Color.FromArgb(255,128,0);
                Series3["PointWidth"] = "0.7";
                Series3.ChartArea = "3nd";
                Series3.Legend = "3nd";
                for(int i=0;i<Series3.Points.Count;i++)
                {
                    if(yTitle3[i]!=0) Series3.Points[i].Label = yTitle3[i].ToString();
                }
                #endregion
                Chart1.Save(this.Server.MapPath("Stat.jpg"), ChartImageFormat.Jpeg);

            }
        }

private double MaxValue(double[] yValue)
        {
            double maxvalue = 0;
            for(int i=0;i<yValue.Length;i++)
            {
                if(yValue[i] > maxvalue) maxvalue = yValue[i];
            }
            return maxvalue;
        }

转载于:https://www.cnblogs.com/jazzka702/archive/2009/06/29/1513097.html

一个功能强大超级好用的图表组件Dundas Chart相关推荐

  1. Android-如何开发一个功能强大的图片选择器

    图片选择器是Android开发中会经常用到的一个功能,特别对于社交类的应用,比如头像设置,比如发图片.自然ImagePicker的轮子很多,今天介绍一个功能强大的轮子SImagePicker 介绍 首 ...

  2. LFTP : 一个功能强大的命令行FTP程序

    LFTP : 一个功能强大的命令行FTP程序 大家好,这篇文章是介绍Lftp以及如何在Linux操作系统下安装的.Lftp是一个基于命令行的文件传输软件(也被称为FTP客户端),由Alexander ...

  3. 原生python自带的ide_python自带的IDE是一个功能强大的IDE

    [多选题]关于炒炭存性说法正确的有( ) [单选题](    )是著作权实现其著作财产权的主要方式. [单选题]以下哪个不属于创新成果?(    ) [单选题]下列哪一项不属于无人机配送的优势 [单选 ...

  4. letter-shell | 一个功能强大的嵌入式shell

    嵌入式开源项目精选专栏 本专栏由Mculover666创建,主要内容为寻找嵌入式领域内的优质开源项目,一是帮助开发者使用开源项目实现更多的功能,二是通过这些开源项目,学习大佬的代码及背后的实现思想,提 ...

  5. Ledger-复式记账的一个功能强大的命令行工具

    无论你是一个电脑极客还是普通用户,记录账户开销总是必不可少的.虽然在Linux上有很多基于GUI的记账工具(比如 - GNUCash)受到大家欢迎,但是工作在命令行的记账工具是很多用户难以想象的.在本 ...

  6. Jcrop是一个功能强大的图像裁剪引擎

    Jcrop是一个功能强大的图像裁剪引擎jQuery的. 它的设计使开发人员可以很容易地直接集成了先进的图像裁剪功能集成到任何基于Web的应用程序在不牺牲动力和灵活性(或编码,测试和调试的星期).Jcr ...

  7. 一个功能强大的开源简历生成器,太炫了!

    OpenResume 是一个功能强大的开源简历生成器和简历解析器.目标是为每个人提供免费的现代专业简历设计,让任何人都能充满信心地申请工作. 核心优势 「实时UI更新」:当输入简历信息时,简历 PDF ...

  8. 前端开发之vue可视化数据图表组件(Chart.js)

    前端开发之vue可视化数据图表组件(Chart.js) 前言 制作好的效果图 vue2中使用Chart.js 1.在项目中安装Chart.js 组件 2.vue文件 vue3中使用Chart.js v ...

  9. 【原创】从头开始,使用安卓系统WebView做一个功能强大的Epub阅读器(五)

    上一章传送:https://blog.csdn.net/mzy24511cs/article/details/80563448. 这一章专门讲一下阅读器的各种工具栏. 1.背景音乐.这个工具简单,用M ...

最新文章

  1. cad菜单栏快捷键_拒绝效率低下,教你瞬间提升10倍!老师傅珍藏多年CAD快捷键...
  2. Azure Redis 系列之 Azure Redis 虚拟网络部署
  3. objc_setAssociatedObject 关联的简单用法
  4. [css] 你有用过哪些css框架?说说它们的特点
  5. 大整数乘法--leetcode Multiply Strings
  6. 2019 年编写现代 JavaScript 代码的5个小技巧
  7. 【es】ElasticSearch master 选举
  8. python 手势检测和追踪_用kinect和python进行手势识别:嗯学习
  9. 计算机二级python什么水平_计算机二级python好过吗 通过率是多少
  10. sqlserver 中通配符%和_的使用
  11. ❤️Mybatis开发中什么是多对一处理、一对多处理?
  12. oracle复制数据库文件,Oracle备份与恢复系列(四)复制数据库 使用原有的控制文件...
  13. VirtualBox安装win10虚拟机
  14. 华为模拟器eNSP将防火墙配置成三层核心交换机
  15. SPSS中系统聚类操作案例
  16. 什么是射频信号发生器?信号发生器具有哪些特点?(二)
  17. 超混沌Lorenz系统图像加密(MATLAB)
  18. 拼多多又起一事:因为看到同事被抬上救护车我被拼多多开除了
  19. Linux的man中文帮助手册
  20. 一阶电路暂态响应的结果分析。_《电路原理》——相量法

热门文章

  1. linux命令 创建目录权限,linux创建用户并设置目录权限
  2. java循环树_for循环输出树木的形状【java】
  3. cdr圆形渐变填充怎么设置_玩出新花样|渐变应用于形状
  4. 南京师范大学与南京林业大学计算机,这8所高校“同宗同源”但不同命!有些是“985”,有些却是“双非”?...
  5. python可变类型和不可变深浅拷贝类型_理解python可变类型vs不可变类型,深拷贝vs浅拷贝...
  6. 中文分词与马尔科夫模型之二:隐马尔科夫模型与维特比
  7. 高频交易主要模式解析
  8. C++两个函数可以相互递归吗_通俗讲:数据结构递归思想
  9. 前景检测算法(十)--SOBS算法
  10. 人脸检测(八)--HOG特征原理及实现