WebChartControl 学习小结

因为在项目的我只遇到了饼状,柱状,线状三种图表所以我只试着学习了这三种方式的编写,嘿嘿

第一步:下载WebChart控件;

第二步:将WebChart.dll添加到工具箱它显示的控件名称为:ChartControl;

第三步:新建WebForm,将工具箱中的ChartControl控件(即WebChart控件)添加到Default.aspx页面,并设置控件ID为ccPie,在属性控件器上设置ChartTitle为My Pie,XTitle为Month,YTitle为Value等属性;

第四步:在后台代码.cs文件中,添加 Using WebChart;

第五步:现在来做饼状图表,它的实现可以说相当简单(像我这种智商的人都可以理解,所以说简单)如下:

  1.    //填充饼状图表
  2.     protected void showPie()
  3.     {
  4.         try
  5.         {
  6.             //创建一个饼状图表的实例
  7.             PieChart chart = new PieChart();
  8.             //绑定数据源
  9.             chart.DataSource = this.getSingleData().Tables[0].DefaultView;
  10.             //设置X轴所对应的字段
  11.             chart.DataXValueField = "Month";
  12.             chart.DataYValueField = "value";
  13.             //设置是否显示图表各部分的值
  14.             chart.DataLabels.Visible = true;
  15.             //设置显示值的字体颜色
  16.             chart.DataLabels.ForeColor = System.Drawing.Color.Blue;
  17.             //设置是否显示阴影
  18.             chart.Shadow.Visible = true;
  19.             chart.DataBind();
  20.             //将饼状图表添加到图表容器
  21.             ccPie.Charts.Add(chart);
  22.             //画出图表
  23.             ccPie.RedrawChart();
  24.         }
  25.         catch (Exception exPie)
  26.         {
  27.             throw new Exception(exPie.Message);
  28.         }
  29.     }
  30.     protected DataSet getSingleData()
  31.     {
  32.         DataSet ds = new DataSet();
  33.         Random rd = new Random(1);
  34.         try
  35.         {
  36.             DataTable dt = new DataTable();
  37.             dt.Columns.Add("Month"typeof(string));
  38.             dt.Columns.Add("value"typeof(string));
  39.             for (int i = 1; i < 13; i++)
  40.             {
  41.                 DataRow row = dt.NewRow();
  42.                 row[0] = i.ToString();
  43.                 row[1] = Convert.ToInt32(rd.NextDouble() * 100);
  44.                 dt.Rows.Add(row);
  45.             }
  46.             ds.Tables.Add(dt);
  47.         }
  48.         catch (Exception exD)
  49.         {
  50.             Response.Write(exD.Message);
  51.         }
  52.         finally
  53.         {
  54.             ds.Dispose();
  55.         }
  56.         return ds;
  57.     }

以上代码的实现效果如下:

饼状图

 

图表各部分的颜色可以在将图表实例添加到图表容器前使用如下语句指定:

            chart.Colors = new Color[] { Color.Red, Color.Blue, Color.Yellow, Color.Cyan, Color.Black, Color.RosyBrown,Color.Green,Color.Pink,Color.Purple,Color.GreenYellow,Color.Navy,Color.YellowGreen };
当然,为了使图表表现的更丰富你还可以通过设置其他属性来实现,好学的人们慢慢研究一下吧,嘻嘻

 

至于柱状图表嘛也没什么太可记录的,忽略了,附件为源码;

现在还是主要记录一下线状图吧,不是一条而是多线,嘿嘿

 

在Defalut.aspx页面上添加WebChart控件,设置ID为ccLine

.cs后台代码如下

  1.   //填充线状图表
  2.     protected void showLines()
  3.     {
  4.         try
  5.         {
  6.             DataSet ds = getMultiData();
  7.             LineChart lc1 = new LineChart();
  8.             lc1.Line.Color = Color.Green;
  9.             lc1.Fill.Color = Color.Green;
  10.             //设置在值点处线的显示形状
  11.             lc1.LineMarker = new DiamondLineMarker(5, Color.Green, Color.Black);
  12.             //设置图例的表示值,如果使用了图表中自带的样式,需要显示设置HasChartLegend来决定是否显示图例
  13.             lc1.Legend = "Value 1";
  14.             LineChart lc2 = new LineChart();
  15.             lc2.Line.Color = Color.Blue;
  16.             lc2.Fill.Color = Color.Blue;
  17.             lc2.LineMarker = new CircleLineMarker(5, Color.Blue, Color.Green);
  18.             lc2.Legend = "Value 2";
  19.             LineChart lc3 = new LineChart();
  20.             lc3.Line.Color = Color.Red;
  21.             lc3.Fill.Color = Color.Red;
  22.             lc3.LineMarker = new DiamondLineMarker(5, Color.Red, Color.Black);
  23.             lc3.Legend = "Value 3";
  24.             LineChart lc4 = new LineChart();
  25.             lc4.Line.Color = Color.Purple;
  26.             lc4.Fill.Color = Color.Purple;
  27.             lc4.LineMarker = new DiamondLineMarker(8, Color.Purple, Color.Yellow);
  28.             lc4.Legend = "Value 4";
  29.             foreach (DataRow row in ds.Tables[0].Rows)
  30.             {
  31.                 lc1.Data.Add(new ChartPoint(row[0].ToString(), float.Parse(row[1].ToString())));
  32.                 lc2.Data.Add(new ChartPoint(row[0].ToString(), float.Parse(row[2].ToString())));
  33.                 lc3.Data.Add(new ChartPoint(row[0].ToString(), float.Parse(row[3].ToString())));
  34.                 lc4.Data.Add(new ChartPoint(row[0].ToString(), float.Parse(row[4].ToString())));
  35.             }
  36.             ccLine.Charts.Add(lc1);
  37.             ccLine.Charts.Add(lc2);
  38.             ccLine.Charts.Add(lc3);
  39.             ccLine.Charts.Add(lc4);
  40.             ccLine.RedrawChart();
  41.         }
  42.         catch (Exception exPie)
  43.         {
  44.             Response.Write(exPie.Message);
  45.         }
  46.     }

效果如下:

线状图

有一处我感觉不太好就是在图例的显示中总是以小正方形显示,而不能对应相应的节点值的形状,如红色线记录对应菱形,这个可能是在控件中没有实现此功能,有待继续研究……

 

汗水一个先,不知道如何上传附件,所以源码就贴在下面吧,再汗!

  1. <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
  2. <%@ Register Assembly="WebChart" Namespace="WebChart" TagPrefix="Web" %>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml" >
  5. <head runat="server">
  6.     <title>学习如何制作web图表</title>
  7. </head>
  8. <body>
  9.     <form id="form1" runat="server">
  10.     <div>
  11.         <table>
  12.             <tr>
  13.                 <td style="width: 100px">
  14.                     <asp:GridView ID="gvPie" runat="server">
  15.                     </asp:GridView>
  16.                 </td>
  17.                 <td style="width: 100px">
  18.                     <Web:ChartControl ID="ccPie" runat="server" BorderStyle="Outset" BorderWidth="5px"
  19.                         GridLines="None" Height="400px" LeftChartPadding="20" Padding="20" Width="500px">
  20.                         <YAxisFont StringFormat="Far,Near,Character,LineLimit" />
  21.                         <ChartTitle StringFormat="Center,Near,Character,LineLimit" Text="My Pie" />
  22.                         <XAxisFont StringFormat="Center,Near,Character,LineLimit" />
  23.                         <Background Color="LightSteelBlue" />
  24.                         <YTitle StringFormat="Center,Near,Character,DirectionVertical" Text="Value" />
  25.                         <XTitle StringFormat="Center,Near,Character,LineLimit" Text="Month" />
  26.                     </Web:ChartControl></td>
  27.             </tr>
  28.             <tr>
  29.                 <td style="width: 100px">
  30.                     <asp:GridView ID="gvColumn" runat="server">
  31.                     </asp:GridView>
  32.                 </td>
  33.                 <td style="width: 100px">
  34.                     <Web:ChartControl ID="ccColumn" runat="server" BorderStyle="Outset" BorderWidth="5px"
  35.                         Height="400px" Padding="20" Width="500px">
  36.                         <YAxisFont StringFormat="Far,Near,Character,LineLimit" />
  37.                         <XTitle StringFormat="Center,Near,Character,LineLimit" Text="Month" />
  38.                         <ChartTitle StringFormat="Center,Near,Character,LineLimit" Text="My Column" />
  39.                         <XAxisFont StringFormat="Center,Near,Character,LineLimit" />
  40.                         <Background Color="LightSteelBlue" />
  41.                         <YTitle StringFormat="Center,Near,Character,DirectionVertical" Text="Value" />
  42.                     </Web:ChartControl></td>
  43.             </tr>
  44.             <tr>
  45.                 <td style="width: 100px">
  46.                     <asp:GridView ID="gvLine" runat="server">
  47.                     </asp:GridView>
  48.                 </td>
  49.                 <td style="width: 100px">
  50.                     <Web:ChartControl ID="ccLine" runat="server" BorderStyle="Outset" BorderWidth="5px"
  51.                         Height="400px" Padding="20" Width="500px">
  52.                         <YAxisFont StringFormat="Far,Near,Character,LineLimit" />
  53.                         <XTitle StringFormat="Center,Near,Character,LineLimit" Text="Month" />
  54.                         <ChartTitle StringFormat="Center,Near,Character,LineLimit" Text="My Lines" />
  55.                         <XAxisFont StringFormat="Center,Near,Character,LineLimit" />
  56.                         <Background Color="LightSteelBlue" />
  57.                         <YTitle StringFormat="Center,Near,Character,DirectionVertical" Text="Value" />
  58.                     </Web:ChartControl></td>
  59.             </tr>
  60.         </table>
  61.         
  62.     </div>
  63.     </form>
  64. </body>
  65. </html>
  66. ********************
  67. using System;
  68. using System.Data;
  69. using System.Configuration;
  70. using System.Web;
  71. using System.Web.Security;
  72. using System.Web.UI;
  73. using System.Web.UI.WebControls;
  74. using System.Web.UI.WebControls.WebParts;
  75. using System.Web.UI.HtmlControls;
  76. using System.Drawing;
  77. using WebChart;
  78. public partial class _Default : System.Web.UI.Page 
  79. {
  80.     //我们可以利用此控件创建下列样式的图表
  81.     //1. Line Charts 
  82.     //2. Smooth Line Charts 
  83.     //3. Column Charts 
  84.     //4. Area Charts 
  85.     //5. Scattered Charts 
  86.     //6. Stacked Column Charts 
  87.     //7. Pie Charts 
  88.     //8. Stacked Area Charts 
  89.     protected void Page_Load(object sender, EventArgs e)
  90.     {
  91.         try
  92.         {
  93.             showPieData();
  94.             showPie();
  95.             showColumnData();
  96.             showColumn();
  97.             showLineData();
  98.             showLines();           
  99.         }
  100.         catch (Exception ex)
  101.         {
  102.             Response.Clear();
  103.             Response.Write(ex.Message);
  104.         }
  105.     }
  106.     //一个数据
  107.     protected DataSet getSingleData()
  108.     {
  109.         DataSet ds = new DataSet();
  110.         Random rd = new Random(1);
  111.         try
  112.         {
  113.             DataTable dt = new DataTable();
  114.             dt.Columns.Add("Month"typeof(string));
  115.             dt.Columns.Add("value"typeof(string));
  116.             for (int i = 1; i < 13; i++)
  117.             {
  118.                 DataRow row = dt.NewRow();
  119.                 row[0] = i.ToString();
  120.                 row[1] = Convert.ToInt32(rd.NextDouble() * 100);
  121.                 dt.Rows.Add(row);
  122.             }
  123.             ds.Tables.Add(dt);
  124.         }
  125.         catch (Exception exD)
  126.         {
  127.             Response.Write(exD.Message);
  128.         }
  129.         finally
  130.         {
  131.             ds.Dispose();
  132.         }
  133.         return ds;
  134.     }
  135.     //多个数据
  136.     protected DataSet getMultiData()
  137.     {
  138.         DataSet ds = new DataSet();
  139.         Random rd = new Random(1);
  140.         try
  141.         {
  142.             DataTable dt = new DataTable();
  143.             dt.Columns.Add("Month"typeof(string));
  144.             dt.Columns.Add("value1"typeof(string));
  145.             dt.Columns.Add("value2"typeof(string));
  146.             dt.Columns.Add("value3"typeof(string));
  147.             dt.Columns.Add("value4"typeof(string));
  148.             for (int i = 1; i < 13; i++)
  149.             {
  150.                 DataRow row = dt.NewRow();
  151.                 row[0] = i.ToString();
  152.                 row[1] = Convert.ToInt32(rd.NextDouble() * 100);
  153.                 row[2] = Convert.ToInt32(rd.NextDouble() * 100);
  154.                 row[3] = Convert.ToInt32(rd.NextDouble() * 100);
  155.                 row[4] = Convert.ToInt32(rd.NextDouble() * 100);
  156.                 dt.Rows.Add(row);
  157.             }
  158.             ds.Tables.Add(dt);
  159.         }
  160.         catch (Exception exD)
  161.         {
  162.             Response.Write(exD.Message);
  163.         }
  164.         finally
  165.         {
  166.             ds.Dispose();
  167.         }
  168.         return ds;
  169.     }
  170.     //显示gvPie
  171.     protected void showPieData()
  172.     {
  173.         gvPie.DataSource = getSingleData().Tables[0].DefaultView;
  174.         gvPie.DataBind();
  175.     }
  176.     //显示gvColumn
  177.     protected void showColumnData()
  178.     {
  179.         gvColumn.DataSource = getSingleData().Tables[0].DefaultView;
  180.         gvColumn.DataBind();
  181.     }
  182.     //显示gvLine
  183.     protected void showLineData()
  184.     {
  185.         gvLine.DataSource = getMultiData().Tables[0].DefaultView;
  186.         gvLine.DataBind();
  187.     }
  188.     //填充饼状图表
  189.     protected void showPie()
  190.     {
  191.         try
  192.         {
  193.             PieChart chart = new PieChart();
  194.             chart.DataSource = this.getSingleData().Tables[0].DefaultView;
  195.             chart.DataXValueField = "Month";
  196.             chart.DataYValueField = "value";
  197.             chart.DataLabels.Visible = true;
  198.             chart.DataLabels.ForeColor = System.Drawing.Color.Blue;
  199.             chart.Shadow.Visible = true;
  200.             chart.DataBind();
  201.             ccPie.Charts.Add(chart);
  202.             ccPie.RedrawChart();
  203.         }
  204.         catch (Exception exPie)
  205.         {
  206.             throw new Exception(exPie.Message);
  207.         }
  208.     }
  209.     //填充柱状图表
  210.     protected void showColumn()
  211.     {
  212.         try
  213.         {
  214.             ColumnChart chart = new ColumnChart();
  215.             chart.DataSource = this.getSingleData().Tables[0].DefaultView;
  216.             chart.DataXValueField = "Month";
  217.             chart.DataYValueField = "value";
  218.             chart.Legend = "Data Value";
  219.             chart.MaxColumnWidth = 15;
  220.             chart.DataLabels.Visible = true;
  221.             chart.DataLabels.ForeColor = Color.Blue;
  222.             chart.Shadow.Visible = true;
  223.             chart.Fill.Color = Color.FromArgb(100, Color.Purple);
  224.             chart.DataBind();
  225.             ccColumn.Charts.Add(chart);
  226.             ccColumn.RedrawChart();
  227.         }
  228.         catch (Exception exPie)
  229.         {
  230.             throw new Exception(exPie.Message);
  231.         }
  232.     }
  233.     //填充线状图表
  234.     protected void showLines()
  235.     {
  236.         try
  237.         {
  238.             DataSet ds = getMultiData();
  239.             LineChart lc1 = new LineChart();
  240.             lc1.Line.Color = Color.Green;
  241.             lc1.Fill.Color = Color.Green;
  242.             lc1.LineMarker = new DiamondLineMarker(5, Color.Green, Color.Black);
  243.             lc1.Legend = "Value 1";
  244.             LineChart lc2 = new LineChart();
  245.             lc2.Line.Color = Color.Blue;
  246.             lc2.Fill.Color = Color.Blue;
  247.             lc2.LineMarker = new CircleLineMarker(5, Color.Blue, Color.Green);
  248.             lc2.Legend = "Value 2";
  249.             LineChart lc3 = new LineChart();
  250.             lc3.Line.Color = Color.Red;
  251.             lc3.Fill.Color = Color.Red;
  252.             lc3.LineMarker = new DiamondLineMarker(5, Color.Red, Color.Black);
  253.             lc3.Legend = "Value 3";
  254.             LineChart lc4 = new LineChart();
  255.             lc4.Line.Color = Color.Purple;
  256.             lc4.Fill.Color = Color.Purple;
  257.             lc4.LineMarker = new DiamondLineMarker(8, Color.Purple, Color.Yellow);
  258.             lc4.Legend = "Value 4";
  259.             foreach (DataRow row in ds.Tables[0].Rows)
  260.             {
  261.                 lc1.Data.Add(new ChartPoint(row[0].ToString(), float.Parse(row[1].ToString())));
  262.                 lc2.Data.Add(new ChartPoint(row[0].ToString(), float.Parse(row[2].ToString())));
  263.                 lc3.Data.Add(new ChartPoint(row[0].ToString(), float.Parse(row[3].ToString())));
  264.                 lc4.Data.Add(new ChartPoint(row[0].ToString(), float.Parse(row[4].ToString())));
  265.             }
  266.             ccLine.Charts.Add(lc1);
  267.             ccLine.Charts.Add(lc2);
  268.             ccLine.Charts.Add(lc3);
  269.             ccLine.Charts.Add(lc4);
  270.             ccLine.RedrawChart();
  271.         }
  272.         catch (Exception exPie)
  273.         {
  274.             Response.Write(exPie.Message);
  275.         }
  276.     }
  277. }
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值