asp.net

位置:IT落伍者 >> asp.net >> 浏览文章

在ASP.NET中动态生成图形


发布日期:2019年07月10日
 
在ASP.NET中动态生成图形
NET有一个很灵巧的特性就是可以编写代码生成动态图形然后将生成的图形保存在磁盘上或者直接将其发送到客户端的浏览器

原理

NET生成图形的功能封装在SystemDrawing名称空间中它支持多种图形文件格式包括JPEGGIFPNGTIFFBMPPhotoCDFlashPIXWMFEMF和EXIF

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

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

Create InMemory BitMap of JPEG

Dim MyChartEngine as New ChartEngine

Dim StockBitMap as BitMap = MyChartEngineDrawChart( myChartData)

Render BitMap Stream Back To Browser

StockBitMapSave(ResponseOutputStream ImageFormatJPEG)

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

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

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

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

<%@ OutputCache Duration= %>

生成股票图形例程

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

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

要想运行这个样本将以下内容分别保存为文件放到IIS的一个应用程序Vroot下请看源码

然后在命令行中键入以下语句

mkdir bin

csc /t:library /out:bin\chartgendll ChartEnginecs /r:SystemWebdll /r:SystemWinformsdll /r:SystemDrawingdll /r:Systemdll

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

上一篇:技术高手讲评ASP.NET MVC 1.0

下一篇:ASP.NET入门教程 13.4.5 计划结账[1]