日期:2008-12-20  浏览次数:20451 次

我以前介绍了一种网页动态生成图片方法,在实践中发现这种方法不好,用于单机版的应用程序还可以,但用于c/s模式的话每一次用户请求都要重新生成一次图片,重新读写一次磁盘。
  看了最新文摘中介绍的的方法我发现最好还是将图片保存在服务器的内存中。
  以下的代码复制下来直接运行就可以显示饼图了
  /////////////////////////////////////////////////////////
  <!--开始-->
  <%@ Page Language="C#" ContentType="image/jpeg" %>
  <%@ Import namespace="System.Drawing"%>
  <html>
  <head>
  <script language="C#" runat="server">
  void Page_Load(object sender,EventArgs e)
  {
  Bitmap image=new Bitmap(350,200);
  Graphics g=Graphics.FromImage(image);
  g.Clear(Color.White);
  Rectangle outline=new Rectangle(10,5,300,100);
  g.DrawEllipse(new Pen(Color.Black,8.0f),outline);
  g.FillPie(new SolidBrush(Color.Red),outline,-20f,120f);
  //这些角度的大小可以由数据库中的对比数据计算决定
  g.FillPie(new SolidBrush(Color.Yellow),outline,100f,120f);
  g.FillPie(new SolidBrush(Color.Blue),outline,220f,100f);
  g.FillPie(new SolidBrush(Color.Green),outline,320f,40f);
  image.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
  }
  </script>
  </head>
  <body>
  <form runat="server">
  
  </form>
  </body>
  </html>
  <!--结束-->
  应用:
  但上面的方法只能显示一个纯粹的图片这样并不能满足我们图文并茂的要求
  如果上面的页面名字叫MyImage.aspx想在其他页面中引用这个动态生成的图片可以在该页中加上下面的语句
  <img src="MyImage.aspx"> 就可以在这一页插入刚才的图片了。