我们在前面已经完成了饼图和条形图的自定义类,下面我们将要应用这些类了。
  使用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的输出流中,这里是直接将图形的内容发送到浏览器,而没有将其保存到磁盘中。

转载于:https://www.cnblogs.com/niit007/archive/2006/08/13/475655.html

ASP.NET画图全攻略(下)相关推荐

  1. ASP.NET画图全攻略(上)

    using System;   using System.IO;//用于文件存取   using System.Data;//用于数据访问   using System.Drawing;//提供画GD ...

  2. Longhorn安装使用全攻略(下)(转)

    Longhorn安装使用全攻略(下)(转)[@more@] 微软Windows图形和游戏负责人Lester,在接受Gamespot访问的时候表示,微软下一代操作系统Longhorn将原生支持XNA开发 ...

  3. ALEXA站长全攻略(转)

    写此文之前本拟在"ALEXA"前加一个"网站流量世界排名",可转而一想ALEXA主营业务及目前的功能也不一个专做网站流量排名的网站,更确切的说它是一个提供搜索的 ...

  4. Asp.net C#制作PDF文件全攻略

    StreamWriter pPDF=new StreamWriter(filePath); ArrayList xRefs=new ArrayList(); float yPos =0f; long ...

  5. 黑莓 8830 全攻略 写了1天(下)

    黑莓 8830 全攻略 写了1天(下) 2011年03月27日 一.关于软件 软件应用,视个人喜好而定,各个黑莓论坛有足够的资源支持,这里只给出基本的软件及相关应用指导. 软件安装方法: 1.通过桌面 ...

  6. Linux下的文件共享全攻略系列之一:Samba服务器简介与快速配置指南

    目前,研究者们开发了许多网络服务和协议来完成资源共享的功能.对于网络用户和管理员来说,他们希望得到免费和高效的服务,而这种需求的最好选择莫过于当前开源的操作系统Linux下的产品了.本专题从多个应用服 ...

  7. synergy在Windows和Linux下使用全攻略(多台PC共享一套键盘鼠标)

    synergy在Windows和Linux下使用全攻略(多台PC共享一套键盘鼠标) 标签: windowslinuxkeyboard服务器测试 2011-11-26 14:51 6882人阅读 评论( ...

  8. linux服务配置大全 fedora 8 ftp 百度文库,Linux下VSFTP配置全攻略

    Linux下VSFTP配置全攻略 [日期:2007-10-05] 来源:Linux公社 作者:Linuxidc [字体:大 中 小] 4]如果要以系统中存在的普通用户登入FTP,也没有什么可以设置的, ...

  9. Linux下架设邮件服务器全攻略(二)

    Linux下架设邮件服务器全攻略(二) (三)sendmail.cf难以配置,Sendmail的开发人员为sendmail的管理者提供了更加容易理解和配置的sendmail.mc文件. 一般情况下,要 ...

最新文章

  1. 手机端设置https访问代理(windows)
  2. SAP Leonardo图片处理相关的机器学习服务在SAP智能服务场景中的应用
  3. 用Vue.js开发一个电影App的前端界面
  4. Python 中如何解决 asyncio 文件描述符最大数量限制问题
  5. GRPC: 如何优雅关闭进程(graceful shutdown)
  6. CentOS下Apache服务器的安装与配置
  7. 在CentOS 5.5安装 Apache2 和 PHP5 及 MySQL
  8. 虎头少保,天下第一手孙禄堂【转】
  9. css城市列表,js 获取全国城市列表方法
  10. vue-oss阿里云上传图片
  11. mysql时区time_zone和sytem_time_zone
  12. 压力换算公斤单位换算_压力单位换算表
  13. Web服务http日志收集
  14. android xposed开发视频,【Xposed】抖音短视频检测 Xposed 分析
  15. 2.6亿孤独灵魂能否听出一座喜马拉雅
  16. 汉诺塔详解(包看包会)
  17. Three.js显示物体的运动轨迹
  18. supplier java8_Java 8之 Supplier示例
  19. 下载神器 Proxyee Down windows10 安装教程
  20. python批量重命名图片、文件脚本

热门文章

  1. oracle4030,oracle ora-4030错误求解
  2. navicat for mysql 数据传输_如何利用Navicat for MySQL数据库进行数据传输
  3. oracle——监听(二、sqlplus连接数据库)
  4. go get如何删除_Go语言HTTP请求(req库)
  5. linux内核rop姿势详解,Linux内核ROP姿势详解(二)
  6. oracle 插入n字母,Nhibernate在oracle批量插入失败,求解?
  7. Zookeeper知识
  8. Spark解决的问题与体系结构
  9. python计算组合数_python排列组合算法
  10. 剑指offer面试题53 - I. 在排序数组中查找数字 I(二分查找)