MSChart使用技巧总结_yulongguiziyao的博客-程序员宅基地_mschart

技术标签: C#  MSchart控件  

上一篇文章写了dotnetCHARTING制作柱形图,折线图和圆饼图 园友一直在推荐用微软的MSChart..于是,这几天工作之余研究了一下,其中也发现了不少问题.

  首先当然需要下载MSChart下载地址 而且微软官方有个很不错的实例代码可以帮助学习使用MSChart下载地址,当然不用我说.大家也知道的.需要NETFramework 3.5以及配合VS2008 sp1来使用了,至于vs2010好像还没有发现MSChart ,希望有知道的朋友给点帮助.

  安装完MSChart后 在vs2008报表一栏里会出现MSChart控件..二话不说 拖到页面.自动生成如下代码:

<asp:ChartID="Chart1" runat="server">
<Series>
<asp:SeriesName="Series1">
</asp:Series>
</Series>
<ChartAreas>
<asp:ChartAreaName="ChartArea1">
</asp:ChartArea>
</ChartAreas>
</asp:Chart>

相信在你们看过微软的实例后对这些属性会有一些了解滴.然后进入正题,本文也主要介绍 MSChart的 折线图,圆饼图,和柱状图, 因为这三种本人感觉是最常用的.对于这三种用MSChart来实现的话本人感觉比较困难的就是数据绑定带来的麻烦,因为在我们平时使用的时候基本都是动态的数据,而微软实例基本都是写死在页面上的数据, 而且网上这方面资料也比较少,只能自己动手实践啦.先介绍几种MSChart的数据绑定方式,

第一种,也是最通俗的一种

Chart1.DataSource = GetData.GetChartData();
Chart1.Series[
"ChartArea1"].XValueMember ="home"
;
Chart1.Series[
"ChartArea1"].YValueMembers ="num1";

第二种往后都是通过List的集合形式绑定数据,这里就用变量list来代替了.一些变量都是对应实体类的名称当然也对应数据库字段Chart1.DataBindTable(list,"home");"

home"是 x轴坐标

第三种,home  分组,Time X轴坐标,num1 y轴坐标

Chart1.DataBindCrossTable(list,"home""Time""num1","Label=num1,ToolTip=num1");

第四种,折线图绑定方式

Chart1.Series[0].Points.DataBind(list,"home""num1","Time","Label=num1,ToolTip=num1");
//绘制线条

MarkerStyle marker = MarkerStyle.Square;
foreach (Series serin
Chart1.Series)
{
ser.ShadowOffset =
1
;
ser.BorderWidth =
2
;
ser.ChartType = SeriesChartType.Line;
ser.MarkerSize =
12
;
ser.MarkerStyle = marker;
ser.MarkerBorderColor = Color.FromArgb(
64,64,64
);
ser.Font =
new Font("Trebuchet MS",8
,FontStyle.Regular);
marker++;
}

第五种:

Chart1.Series["Series1"].Points.DataBindXY(list,"home", list, "num1");

我所了解的就这么几种了,有朋友知道有更好的绑定方式不妨贴上代码来.

下面介绍下MSChart下的柱形图

常用的属性这篇博客都有介绍,在这里我就不罗嗦了..http://www.cnblogs.com/wenjl520/archive/2009/05/16/1458461.html

//是否启用3D显示
Chart1.ChartAreas[0].Area3DStyle.Enable3D =true;

//显示类型,可以是柱形折线等等

Chart1.Series[0].ChartType = SeriesChartType.Line;

//// Draw as 3D Cylinder

Chart1.Series[0]["DrawingStyle"] ="Cylinder";

//像素点见宽度

Chart1.Series[0]["PointWidth"] ="0.8";

//是否显示数值

Chart1.Series[0].IsValueShownAsLabel =true;

//X轴数据显示间隔

Chart1.ChartAreas[0].AxisX.Interval =1;

//直角坐标显示
,
Chart1.ChartAreas[0].Area3DStyle.IsRightAngleAxes =false
;

//是否群集在一起

Chart1.ChartAreas[0].Area3DStyle.IsClustered =false;

//转动X轴角度

Chart1.ChartAreas[0].Area3DStyle.Inclination =40;

//转动Y轴角度

Chart1.ChartAreas[0].Area3DStyle.Rotation =20;

foreach (Series serin
Chart1.Series)
{
//柱形宽度

ser["PixelPointWidth"] ="40";
//像素点深度

ser["PixelPointDepth"] ="80";
//像素点间隙深度

ser["PixelPointGapDepth"] ="10";
}

这些属性都是设置MSChart的外观样式的属性,大家可以尝试修改试试,

当然主要的是绑定数据了.所以在调用这些属性时先用上文介绍的几种绑定方式绑定数据.

有些属性可能在3D模式下失效或者在2D模式下失效,这是正常现象,

效果图:


折线图:

属性同上..有些属性会在折线图下失效,

效果图:

圆饼图:


代码

IList<ChartModel> list =GetData.GetChartDataListByPie();

//数值显示百分比形式

Chart1.Series["Series1"].Label ="#PERCENT{P}";
Chart1.Series[
"Series1"].Points.DataBind(list,"home","num1","LegendText=home,YValues=num1,ToolTip=num1"
);

Chart1.Series[
"Series1"
].ChartType =System.Web.UI.DataVisualization.Charting.SeriesChartType.Pie;

Chart1.Series[
"Series1"].ToolTip ="#LEGENDTEXT: #VAL{C} million"
;

Chart1.ChartAreas[
"ChartArea1"].Area3DStyle.Enable3D =true;

 

这个比较简单吧..

主要是这里的 Chart1.Series["Series1"].Points.DataBind(list,"home", "num1","LegendText=home,YValues=num1,ToolTip=num1");

LegendText整了我半天.这个是显示右侧说明的,开始老是显示不出来,而且还不统一.

 

Legend其实就是右侧显示的说明,但是做过的朋友会发现在柱形图还有折线图如果页面指定了一个<Lengend></Lengend>标签的话,会多显示一个,所以需要在执行绑定的时候

写上这么一段代码 Chart1.Series.Clear();

 

MSChart可不止可以制作这三种图形,我只是觉得这三种比较常用.想在圆饼图中合并几项成显示成其他,搞了半天没搞出来,郁闷,谁知道告诉下.

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yulongguiziyao/article/details/12252591

智能推荐

NSStringDrawingOptions_yinachong的博客-程序员宅基地

NSStringDrawingTruncatesLastVisibleLine:如果文本内容超出指定的矩形限制,文本将被截去并在最后一个字符后加上省略号。如果没有指定NSStringDrawingUsesLineFragmentOrigin选项,则该选项被忽略。NSStringDrawingUsesLineFragmentOrigin:绘制文本时使用 line fragement or

条件注解@ConditionalOnBean失效原因_zhm_sky的博客-程序员宅基地_conditionalonbean不生效

测试环境(配置类)@Import({User.class,Pet.class})@Configuration(proxyBeanMethods = true)public class MyConfig { @Bean @ConditionalOnBean(name = "cat") public User user(){ return new User("航书", 12); } @Bean("cat") public

一重指针、二重指针做函数参数的深刻分析(虽然很基础,但要深刻理解)_ShenHang_的博客-程序员宅基地

一重指针做函数参数#include&lt;iostream&gt;using namespace std;void change(int *p){ *p = 20; p++; cout &lt;&lt; p &lt;&lt; endl;}int main() { int a = 10; change(&amp;a); cout &lt;&lt; &amp;a &lt;&lt...

java设置图片点击渐变透明,图片实现渐变/透明效果_weixin_39569753的博客-程序员宅基地

众所周知,图片等一些盒子都可以利用opacity属性来设置不透明度,但是前两天我朋友忽然给我一个截图,截图效果如下图中红框圈住的位置图片或者说摄像头采集的画面出现了渐变到透明,可以清楚的看到可以看到后面小哥的胳膊,然后问我如何实现这种效果,这下把我难住了(呵 天天给我出难题),我开始在个大论坛开始寻找解决方案;忽然在前天,日常逛论坛时看到一个文字投影的效果,而后忽然灵机一动就想,能不能变相的实现前...

java笔记_笑容温暖城寨的博客-程序员宅基地

安卓课的Java扩展笔记包类命名规范总结输出换行与不换行mian方法中的args参数Math类快捷输出语句static关键字定义无参方法定义带返回值方法包package com.eoe.basic.day01;//包名 在java当中用.表示windos中的/,一般格式:com.公司名.项目名.业务模块名称例如:com.sina.crm.user类命名规范总结1、java中可以有多个类2、java中可以有多个类,但是最多只有一个类的类名和文件名相同3、如果一个类被public修饰,那该类

一、网络游戏架构的前世今生(2)_王元恺David的博客-程序员宅基地

网络游戏架构演进史,优化游戏网络,自定义网络协议

随便推点

[原创]FineUI秘密花园(六) — 表单控件_hong2511的博客-程序员宅基地

FineUI中有哪些常用的表单控件,它们有什么共同点和不同点,这一篇文章我们会详细解说。 表单控件的公共属性 所有的表单都具有如下属性: ShowLabel:是否显示标签(默认值:t

fineui mysql_FineUI 相关_卖家胖蝌蚪的博客-程序员宅基地

FineUI 开源版(原ExtAsp.Net)Last updated:2017-03SURFSKYhttp://pan.baidu.com/share/home?uk=170857326#category/type=0---------------------------------------------------配置&amp;预设http://fineui.com/demo/#/demo/...

手把手教你使用FineUI+动软代码生成器开发一个b/s结构的取送货管理信息系统(附源码)之开篇_编程鸭的博客-程序员宅基地

一 本系列随笔概览及产生的背景近阶段接到一些b/s类型的软件项目,但是团队成员之前大部分没有这方面的开发经验,于是自己选择了一套目前网上比较容易上手的开发框架(FineUI),计划录制一套视频讲座,来讲解如何利用FineUI快速开发一个小型的b/s结构的管理系统,已达到帮助团队成员快速掌握b/s结构信息系统的开发方法。源码位置:https://github.com/kamiba/FineU...

[原创]FineUI秘密花园(一) — 为什么选择FineUI?_weixin_33778778的博客-程序员宅基地

首先来看看FineUI是什么? FineUI 是一组基于 ExtJS 的专业 ASP.NET 控件库,拥有原生的 AJAX 支持和华丽的 UI 效果。 FineUI 的使命是创建没有 JavaScript,没有 CSS,没有 UpdatePanel,没有 ViewState,没有 WebServices 的网站应用程序。   从这段官方描述中,我们看到了三个信息点: ...

FineUI布局应用(二)_weixin_30767921的博客-程序员宅基地

一、FineUI页面布局分为 1、Fit布局 1 &lt;f:Panel ID="Panel1" Title="布局Fit(Layout=Fit)" runat="server" Layout="Fit" Height="300px" EnableFrame="true" EnableCollapse="true" 2 BodyPa...

[蓝桥杯][2019年第十届真题]修改数组_深夜面包的博客-程序员宅基地

题目链接:修改数组解题思路:用并查集思路,如果一个数的父节点就是当前数的位置,如果标记下一个数值一样的数的位置+1#include&lt;bits/stdc++.h&gt;#define x first#define y second#define mem1(h) memset(h,-1,sizeof h)#define mem0(h) memset(h,0,sizeof h)#define mcp(a,b) memcpy(a,b,sizeof b)using namespace std