在ASP.NET中动态生成图形

转载 2012年03月29日 17:37:39
.NET有一个很灵巧的特性,就是可以编写代码生成动态图形,然后将生成的图形保存在磁盘上或者直接将其发送到客户端的浏览器。

原理

用.NET生成图形的功能封装在System.Drawing名称空间中,它支持多种图形文件格式,包括:JPEG、GIF、PNG、TIFF、BMP、PhotoCD、FlashPIX、WMF、EMF和EXIF。

创建这些图形的通用机制是构造一个BitMap(位图)对象,它为要创建的图形提供了内存空间。然后,就可以调用它的“Save”方法,将其保存在磁盘,或者将其发送到任何.NET的输出流中。ASP.NET通过Response.OutputStream属性揭示.NET输出流,这意味着你可以直接将图形的内容发送到浏览器,而不用将其保存到磁盘中。

例如,在VB中,可以编写这样的代码:

' Create In-Memory BitMap of JPEG
Dim MyChartEngine as New ChartEngine
Dim StockBitMap as BitMap = MyChartEngine.DrawChart(600, 400, myChartData)
' Render BitMap Stream Back To Browser
StockBitMap.Save(Response.OutputStream, ImageFormat.JPEG)

如果用的是一个ASPX页面实现这个目的,就要同时设置适当的HTTP ContentType(内容类型)头文件,这样浏览器就不会将页面内容解释为html,而是解释为一个图形。可以通过代码设置Response.ContentType属性,或者是在顶层页面指令上设置新的“ContentType”属性来实现这一点:

<%@ Page Language="VB" ContentType="image/jpeg" %>

注意:ASP.NET的输出缓存功能对文本内容和二进制输出都奏效。这样,如果你正在从一个页面动态生成图形,就可以很容易地使用输出缓存指令,从而避免在各个请求上都重新生成图形。要注意图形的生成有可能是很麻烦的,因此我强烈推荐你使用这一功能。比如,可以用下面的指令每隔60秒对生成的图形进行输出缓存:

<%@ Page Language="VB" ContentType="image/jpeg" %>
<%@ OutputCache Duration="60" %>

生成股票图形例程

为了给你提供一个生成图形的完整举例,在这里包含了一个简单的股票图形生成样本代码。请注意其中股票的价格并不是真实的,只是我想象出来的。样本代码使用了一个定制的“ChartEngine”类,它可以将建立一个普通图形所要求的逻辑封装起来。你应该可以使用这个组件来制作任何定制图形,它并不是只局限于股票数据的。

在样本代码中,随便你想要使用哪些都可以,想要怎样使用都可以,也可以随便将其贴在文章的任何地方,以及其它样本中。

要想运行这个样本,将以下内容分别保存为文件放到IIS的一个应用程序Vroot下:请看源码。
然后,在命令行中键入以下语句:

mkdir bin
csc /t:library /out:bin\chartgen.dll ChartEngine.cs /r:System.Web.dll /r:System.Winforms.dll /r:System.Drawing.dll /r:System.dll

chartengine被编译后,点击StockPicker.aspx页面运行这个样本。这样,也就设置了一个指向ImageGenerator_VB.aspx 页面的<img>标记,就是它来进行实际的图形生成工作。

相关文章推荐

ASP.NET+JQuery+.Ashx实现+百度Echarts 实现动态柱状图数据图形报表的统计

最终效果图如下:

关于ASP.net中生成图形验证码

一、步骤:①随机生成

asp.net使用ashx生成图形验证码

验证码的好处不用我多说,你们都懂的。我在网上看到有人把验证码直接写在aspx页面里,也就是说这种方式请求验证码等于请求一个页面,这样做很不科学。如下所示 ...

asp.net 生成图形验证码(字母和数字混合)

验证码技术是网站开发过程中比较重要的技术,可以防止非法人员利用注册机或者登陆工具来攻击我们的网站。下面是效果图:具体实现方法如下:1、主要思路是:引用Using System.Drawing命名空间,...

动态生成PNG格式的图片直接嵌在ASP.NET网页中

 前几天接到一个需求,要为某个产生单据的网页里增加单据流水号的条码。生成条码的算法是现成的,只要把条码图片展示在流水号文字之下就行。 本想用jQuery的ajax调用ashx返回二进制流,...
  • ki1381
  • ki1381
  • 2014-06-29 20:40
  • 2924

ASP.NET动态生成静态页面的实例代码

实现静态页面的生成并没有实现分页功能。其主要原理就是读取数据库的数据然后替换掉静态模板页的内容。 1,首先制作一个模板页,暂时命名为template.htm。 生成静态页面_www....

asp.net下调用Matlab生成动态链接库

对于这次论文项目,最后在写一篇关于工程的博客,那就是在asp.net下调用matlab生成的dll动态链接库。至今关于matlab,c/c++(opencv),c#(asp.net)我总共写了4篇配置...

Asp.Net 中 动态生成 Excel

1,Server 端存在 Excel 文件,也就是模板。 复制模板,取得要显示的数据,以操作表的形式,将数据写入Excel 。关于 操作方法   原来的Post上面有,在此不详细说明了。 2...

Asp.net动态生成html页面

====================================================== 注:本文源代码点此下载 =============================...

ASP.NET技术动态生成HTML页面

====================================================== 注:本文源代码点此下载 =============================...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)