ASP.NET画图全攻略(下)

发布时间:2013-09-19 11:33:46来源:阅读(1312)


    我们在前面已经完成了饼图和条形图的自定义类,下面我们将要应用这些类了。 Chinaz@com
    使用vs.net新建一个名为Insight_cs的Web应用程序,并且添加到刚才的Insight工程中。删除默认的webform1.aspx文件,新建一个名为SalesChart.aspx文件。打开此文件,在代码模式下,将第一行替换为: [中国站长站]
    <%@ Page ContentType="image/gif" Language="c#" AutoEventWireup="false" Codebehind="SalesChart.aspx.cs" Inherits="Insight_cs.SalesChart" %>
    打开文件SalesChart.aspx.cs,其中代码如下所示: 中国.站长站
    以下为引用的内容:
     using System;
      using System.Data;
      using System.Web;
      using System.IO;
      using System.Data.SqlClient;
      using Insight_cs.WebCharts;//这是自定义的名字空间
      namespace Insight_cs
      {
       public class SalesChart : System.Web.UI.Page
       {
       public SalesChart()
       {
       Page.Init += new System.EventHandler(Page_Init);
       }
       private void Page_Load(object sender, System.EventArgs e)
       {
       file://从数据库中取得数据,用于画图 Chinaz_com
       string sql = "SELECT " +"Year(sa.ord_date) As [Year], " +"SUM(sa.qty) As [Qty] " +"FROM " +"sales sa " +"inner join stores st on(sa.stor_id = st.stor_id) " +"GROUP BY " +"Year(sa.ord_date) " + "ORDER BY " + "[Year]";
       string connectString = "Password=ben; User ID=sa; DataBase=pubs;Data Source=localhost";
       SqlDataAdapter da = new SqlDataAdapter(sql,connectString);
       DataSet ds = new DataSet();
       int rows = da.Fill(ds,"chartData");
       file://设定产生图的类型(pie or bar)
       string type = "";
       if(null==Request["type"])
       {
       type = "PIE";
       }
       else
       {
       type = Request["type"].ToString().ToUpper();
       } 中国.站长站
       file://设置图大小
       int width = 0;
       if(null==Request["width"])
       {
       width = 400;
       }
       else
       {
       width = Convert.ToInt32(Request["width"]);
       }
       int height = 0;
       if(null==Request["height"])
       {
       height = 400;
       }
       else
       {
       height = Convert.ToInt32(Request["height"]);
       }
       file://设置图表标题
       string title = "";
       if(null!=Request["title"])
       {
       title = Request["title"].ToString();
       }
       string subTitle = "";
       if(null!=Request["subtitle"])
       {
    中国站.长站
       subTitle = Request["subtitle"].ToString();
       }
       if(0   {
       switch(type)
       {
       case "PIE":
       PieChart pc = new PieChart();
       pc.Render(title,subTitle,width,height,ds,Response.OutputStream);
       break;
       case "BAR":
       BarChart bc = new BarChart();
       bc.Render(title,subTitle,width,height,ds,Response.OutputStream);
       break;
       default:
      
       break;
       }
       }
       }
       private void Page_Init(object sender, EventArgs e)
       {
       //
       // CODEGEN: This call is required by the ASP.NET Web Form Designer.
       //
       InitializeComponent();
       }
       #region Web Form Designer generated code 中国.站长站
       ///
       /// Required method for Designer support - do not modify
       /// the contents of this method with the code editor.
       ///

       private void InitializeComponent()
       {
       this.Load += new System.EventHandler(this.Page_Load);
       }
       #endregion
       }
      }

    以上的代码并没有什么难的,这里就不做分析了。 站长.站
    在vs.net中,打开Insight_cs solution,右击”引用“,将出现”添加引用“,将组件文件Insight_cs.WebCharts.dll加入,使其成为项目中的namespace。
    下面我们就可以浏览结果了。 
    首先建立一个demochart.aspx文件,在其代码中,加入一下内容: Www.Chinaz.com
    以下为引用的内容:
      Sales Data - Pie  src="SalesChart.aspx?type=pie&width=300&height=30
      0&title=Sales+by+Year&subtitle=Books">
      Sales Data - Bar  src="SalesChart.aspx?type=bar&width=300&height=30
      0&title=Sales+by+Year&subtitle=Books">
      type表示显示图形的类型,是饼图pie,还是条形图bar。
      width,height表示图形的大小。
      title表示大标题文字。
      subtitle表示小标题文字。

    由此,我们完成了利用asp.net技术画图的过程。 中国站长_站,为中文网站提供动力
    综合起来,可以总结出以下几点:1.利用ASP.NET技术,可以在不使用第三方组件的情况下,画出理想的图形。2.画图核心是构造一个BitMap(位图)对象,它为要创建的图形提供了内存空间。然后,利用有关namespace提供的类和方法画出图形。最后就可以调用Bitmap对象的“Save”方法,将其发送到任何.NET的输出流中,这里是直接将图形的内容发送到浏览器,而没有将其保存到磁盘中。 

关键字