在ASP.NET中动态生成图形

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

原理

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

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

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

'CreateIn-MemoryBitMapofJPEG
DimMyChartEngineasNewChartEngine
DimStockBitMapasBitMap=MyChartEngine.DrawChart(600,400,myChartData)
'RenderBitMapStreamBackToBrowser
StockBitMap.Save(Response.OutputStream,ImageFormat.JPEG)


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

<@PageLanguage="VB"ContentType="image/jpeg">

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

<@PageLanguage="VB"ContentType="image/jpeg">
<@OutputCacheDuration="60">

生成股票图形例程

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

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值