Microsoft Chart Controls 小结

          今天要总结的是Microsoft Chart Controls。

           微软在收购了 Dundas 这家优秀的图表组件公司后,日前释出了功能相当强大,而且完全免费的图表组件,名为「Microsoft Chart Controls for Microsoft .NET Framework 3.5」。

过去要在 ASP.NET 或 Windows Form 中绘制图表,可能要花钱买其它公司的组件,或用微软的绘图函式库自己撰码处理。但现在透过组件,以及微软提供免费下载的上百个现成范例 (包装成单一个 project)、免费的技术文件,可让您的项目及报表,轻松套用各种功能强大的 2D、3D、实时变化的动态图表;且透过 AJAX,可让图表及里面的数据,每秒钟都持续更新使用者透过浏览器,可和图表做各种互动设定。

          下面提供一个官网地址,大家可在这下载(而且里面也有丰富的示例,大家看到后会有一种很爽的感觉):

           http://archive.msdn.microsoft.com/mschart

          由于在近期的项目中用到了将数据显示为图表,所以自己写了一个将datasource绑定到图表的方法。

          前台的报表代码如下:

<asp:Chart ID="Chart1" runat="server" BackColor="WhiteSmoke" BackSecondaryColor="White"
                        BackGradientStyle="TopBottom" BorderlineDashStyle="Solid" Palette="BrightPastel"
                        BorderColor="26, 59, 105" Height="324px" Width="846px" BorderWidth="2" ImageLocation="~/TempImages/ChartPic_#SEQ(300,3)">
                        <Legends>
                            <asp:Legend IsTextAutoFit="False" Name="Default" BackColor="Transparent" Font="Trebuchet MS, 8.25pt, style=Bold">
                            </asp:Legend>
                        </Legends>
                        <BorderSkin SkinStyle="Emboss"></BorderSkin>
                        <ChartAreas>
                            <asp:ChartArea Name="ChartArea1" BorderColor="64, 64, 64, 64" BorderDashStyle="Solid"
                                BackSecondaryColor="White" BackColor="Gainsboro" ShadowColor="Transparent" BackGradientStyle="TopBottom">
                                <Area3DStyle Rotation="10" Perspective="10" Inclination="15" IsRightAngleAxes="False"
                                    WallWidth="0" IsClustered="False" />
                                <AxisY LineColor="64, 64, 64, 64" IsLabelAutoFit="False">
                                    <LabelStyle Font="Trebuchet MS, 8.25pt, style=Bold" />
                                    <MajorGrid LineColor="64, 64, 64, 64" />
                                </AxisY>
                                <AxisX LineColor="64, 64, 64, 64">
                                    <LabelStyle Font="Trebuchet MS, 8.25pt, style=Bold" IntervalType="Auto" />
                                    <MajorGrid Interval="Auto" IntervalType="Auto" LineColor="64, 64, 64, 64" />
                                    <MajorTickMark IntervalType="Auto" />
                                </AxisX>
                            </asp:ChartArea>
                        </ChartAreas>
                    </asp:Chart>


     绑定dataTable到图表的方法如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.DataVisualization.Charting;
using System.Web.UI.WebControls;
using System.Data;
using BLL;

namespace AdminMis
{
    public class BindChart
    {
        /// <summary>
        /// 用于绑定图表
        /// </summary>
        /// <param name="Chart">图表</param>
        /// <param name="type">图表类型</param>
        /// <param name="dtVariety">种类的datatable</param>
        /// <param name="strVariety">种类的字符串</param>
        /// <param name="dtXY">XY坐标的datatable</param>
        /// <param name="strX">X坐标的字符串</param>
        /// <param name="strY">Y坐标的字符串</param>
        /// <param name="CheckBoxList"></param>
        public void BindDataTableToChart(ref Chart Chart,SeriesChartType type,System.Data.DataTable dtVariety,string strTag,string strVariety,System.Data.DataTable dtXY,string strX,string strY,ref CheckBoxList CheckBoxList)
        { 
            //图表

            //临时变量,用来绑定checkboxlist
            

            foreach (DataRow row in dtVariety.Rows)
            {
                // for each Row, add a new series
                string seriesName = row[strVariety].ToString() + strTag;
                Chart.Series.Add(seriesName);
                Chart.Series[seriesName].ChartType = type;
                Chart.Series[seriesName].BorderWidth = 2;
                Chart.Series[seriesName].ShadowOffset = 2;
                                
            }
            foreach (DataRow row in dtXY.Rows)
            {
                string seriesName = row[strVariety].ToString() + strTag;

                string date = row[strX].ToString();
                int YVal = (int)row[strY];

                Chart.Series[seriesName].Points.AddXY(date, YVal);
            }

            for (int i = 0; i < dtVariety.Rows.Count; i++)
            {
                Chart.Series[i].Enabled = CheckBoxList.Items[i].Selected;
            }
        }


        public void BindXYToChart(ref Chart Chart, SeriesChartType type, System.Data.DataTable dtXY, string strX, string strY)
        {
            Chart.Series.Add("default");
            Chart.Series["default"].ChartType = type;

            foreach (DataRow row in dtXY.Rows)
            {
                string date = row[strX].ToString();
                int YVal = (int)row[strY];

                Chart.Series["default"].Points.AddXY(date,YVal);
            }
        }

    }
}


             第一个方法是用来绑定三维的方法,第二个方法是用来绑定二维的方法。
         

你可能感兴趣的:(Microsoft Chart Controls 小结)