Microsoft Chart Controlのまとめ

6473 ワード

今日まとめるのはMicrosoft Chart Controlです.
マイクロソフトはDundasという優れたグラフコンポーネント会社を買収した後、かなり強力で完全に無料のグラフコンポーネントを「Microsoft Chart Control for Microsoft.NET Framework 3.5」と発表した.過去はASP.NETやWindows Formでグラフを描くと、他の会社のコンポーネントを買うのにお金を使うか、マイクロソフトのグラフィックライブラリで自分でコードを作成して処理する可能性があります.しかし、このコンポーネントとマイクロソフトが無料でダウンロードできる100以上の既存のサンプル(単一のプロジェクトにパッケージ)、無料の技術ファイルを提供することで、プロジェクトとレポートを簡単に組み合わせ、強力な2 D、3 D、リアルタイムの変化のダイナミックなグラフを簡単に使用することができます.AJAXを通じて、グラフと中のデータを毎秒更新し続けることができます.利用者はブラウザを通して、グラフと様々なインタラクティブな設定を行うことができます.
以下に公式サイトのアドレスを提供して、みんなはここでダウンロードすることができます(しかも中にも豊富な例があって、みんなは見た後に1種のとてもさわやかな感じがします):
           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);
            }
        }

    }
}

1つ目の方法は3 Dをバインドする方法で、2つ目の方法は2 Dをバインドする方法です.