ASP.NET画图全攻略(下)

asp.net|攻略

我们在前面已经完成了饼图和条形图的自定义类,下面我们将要应用这些类了。
  使用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)
   {
   //从数据库中取得数据,用于画图
   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");
   //设定产生图的类型(pie or bar)
   string type = "";
   if(null==Request["type"])
   {
   type = "PIE";
   }
   else
   {
   type = Request["type"].ToString().ToUpper();
   }
   //设置图大小
   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"]);
   }
   //设置图表标题
   string title = "";
   if(null!=Request["title"])
   {
   title = Request["title"].ToString();
   }
   string subTitle = "";
   if(null!=Request["subtitle"])
   {
   subTitle = Request["subtitle"].ToString();
   }
   if(0<rows)
   {
   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
   /// <summary>
   /// Required method for Designer support - do not modify
   /// the contents of this method with the code editor.
   /// </summary>
   private void InitializeComponent()
   {
   this.Load += new System.EventHandler(this.Page_Load);
   }
   #endregion
   }
  }
  以上的代码并没有什么难的,这里就不做分析了。
  在vs.net中,打开Insight_cs solution,右击”引用“,将出现”添加引用“,将组件文件Insight_cs.WebCharts.dll加入,使其成为项目中的namespace。
  下面我们就可以浏览结果了。
  首先建立一个demochart.aspx文件,在其代码中,加入一下内容:
  <IMG alt="Sales Data - Pie"
  src="SalesChart.aspx?type=pie&width=300&height=30
  0&title=Sales+by+Year&subtitle=Books">
  <IMG alt="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表示小标题文字。
  其结果显示如图1(图片在文章《ASP.NET画图全攻略(上)》)。
  
  由此,我们完成了利用asp.net技术画图的过程。
  综合起来,可以总结出以下几点:1.利用ASP.NET技术,可以在不使用第三方组件的情况下,画出理想的图形。2.画图核心是构造一个BitMap(位图)对象,它为要创建的图形提供了内存空间。然后,利用有关namespace提供的类和方法画出图形。最后就可以调用Bitmap对象的“Save”方法,将其发送到任何.NET的输出流中,这里是直接将图形的内容发送到浏览器,而没有将其保存到磁盘中。

时间: 2024-08-29 13:05:41

ASP.NET画图全攻略(下)的相关文章

ASP.NET画图全攻略(上)

asp.net|攻略 本文代码是基于Beta2开发      越来越多的Web应用需要使用图表来进行数据显示和分析.例如:投票结果显示,公司生产情况统计图显示分析等等.利用图表来显示数据,具有直观,清晰等优点.   传统的ASP技术是不支持画图表的,那么就不得不利用Active X或者Java applets来实现这个功能.新近出现的ASP.NET解决了这个问题,只要利用ASP.NET中关于图形显示的类,就可以画出丰富,动态的图表(如图1).本文将要讲述如何利用ASP.NET技术结合ADO.NE

提升PHP执行速度全攻略(下)

攻略|速度|执行 Web内容的压缩(令你客户用起来更"爽") 经过以上两个的方法,相信你的PHP应用的性能已经得到了很大的提高,现在该从另一个方面来考虑了:下载速度.如果你的应用只是在公司内跑,所有的客户都使用100Mb/s的以太网连接到服务器,这可能不是一个问题,但是如果你的客户中有使用慢速的modem连接的,你就要考虑使用内容压缩这个方法了.根据IETF的规范,大多数的浏览器都支持gzip的内 容压缩.这意味着你在将web的内容发给客户的浏览器前,可以先使用gzip进行压缩,浏览器

提升PHP执行速度全攻略(下)_php基础

经过以上两个的方法,相信你的PHP应用的性能已经得到了很大的提高,现在该从另一个方面来考虑了:下载速度.如果你的应用只是在公司内跑,所有的客户都使用100Mb/s的以太网连接到服务器,这可能不是一个问题,但是如果你的客户中有使用慢速的modem连接的,你就要考虑使用内容压缩这个方法了. 根据IETF的规范,大多数的浏览器都支持gzip的内 容压缩.这意味着你在将web的内容发给客户的浏览器前,可以先使用gzip进行压缩,浏览器在接收的时候就会自动解压数据,并且令用户看到原来的页面.同样,压缩we

ALEXA站长全攻略-Alexa世界排名

写此文之前本拟在"ALEXA"前加一个"网站流量世界排名",可转而一想ALEXA主营业务及目前的功能也不一个专做网站流量排名的网站,更确切的说它是一个提供搜索的网站,提供分类导航的网站.不过在中国,大多数人与我的第一反应就是它是一个做网站流量排名的网站,是一个"排名网站".就是<福布斯>是靠给富人排名而使自己出名,ALEXA是给网站排名而出名.初识ALEXA是2003年初,不过因其全英文而使我对其只知皮毛,随着国内媒体一次次地提起它,

ALEXA站长全攻略

中介交易 SEO诊断 淘宝客 云主机 技术大厅 写此文之前本拟在"ALEXA"前加一个"网站流量世界排名",可转而一想ALEXA主营业务及目前的功能也不一个专做网站流量排名的网站,更确切的说它是一个提供搜索的网站,提供分类导航的网站.不过在中国,大多数人与我的第一反应就是它是一个做网站流量排名的网站,是一个"排名网站".就是<福布斯>是靠给富人排名而使自己出名,ALEXA是给网站排名而出名. 初识ALEXA是2003年初,不过因其全英

win2K下配置asp+cgi+php+mysql全攻略

win2K下配置asp+cgi+php+mysql全攻略 支持asp+cgi+php+mysql 安装win2K,安装IIS Indexing Service, FrontPage 2000 Server Extensions, Internet Service Manager (HTML) 这几个别装,还有其它的一些,总之不用的都别装.(根据安全原则,最少的服务+最小的权限=最大的安全.) 首先,打开internet管理器(开始-->程序-->管理-->Internet服务管理) 如果

搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 框架 (四)配置全攻略

     本篇目的:配置Spring.Net和Nhibernate.配置Spring.Net来注入Nhibernate需要的SessionFactory,配置业务逻辑层所需要的Dao层属性的支持.配置这套框架与web程序关联.      在上一篇我们已经将三层基本搭建起来了.这篇中我们将要讲述怎样通过配置,将三层通过IOC注入.现在我们开始我们的旅程: 第一步:配置实体类[Model]对应的数据库映射文件.Nhibernate中要求映射文件必须按照约定的文件命名格式进行命名.至于放到什么项目中都

windows下MRTG安装全攻略

在一个网络中,作为网络工程师或者网络管理员,需要随时了解网络的各种状态,以判断网络是否处于健康状态或者随时了解网络的流量.每个路由器的流量.每个交换机端口的流量-,以供年度报告时向上级领导提供详实的数据及图形报告.在这里,我先把自己有关如何获取网络流量的方法向大家讲解一下,如果有必要,您可以立即动手,自己做一个公司的网络流量监控图出来.网络流量的监控需要涉及到SNMP.PERL.MRTG和一点网页的相关知识,现在我就 STEP BY STEP给大家讲解怎么具体实施.我的水平有限,如有错误或者更好

下拉菜单全攻略之Dreamweaver篇

dreamweaver|菜单|攻略|下拉 下拉菜单是网上最常见到的效果之一,用鼠标轻轻一点或是移过去,就出现一个更加详细的菜单,它不仅节省了网页排版上的空间.使网页布局简洁有序,而且一个新颖美观的下拉菜单,更是为您的网页增色不少. 制作下拉菜单的方法多种多样,本期专栏将为您介绍四种常用的制作方法,让您随心打造自己的下拉菜单. ■ 用Dreamweaver制作下拉菜单Dreamweaver是制作下拉菜单最常用的工具,方法简单,控制自由,可以最大限度地随心打造菜单样式,是制作下拄菜单的必修课.