在ASP.NET中动态生成图形(转)
来源:互联网 发布:backbone.js 编辑:程序博客网 时间:2024/06/07 03:53
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
.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中动态生成图形(转)';return true">
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
在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中,可以编写这样的代码:
' 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>标记,就是它来进行
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- 在ASP.NET中动态生成图形
- 在ASP.NET中动态生成图形
- 在ASP.NET中动态生成图形(转)
- 在ASP.NET中动态生成图形(转)
- ASP.NET 中动态创建图形范例
- 在asp.net中动态生成web控件
- 如何在asp.net中动态生成验证码
- 在asp.net中动态生成web控件
- 如何在asp.net中动态生成验证码
- 在ASP.NET动态页中生成静态页面
- asp.net在页面中动态生成表格
- 在 ASP.NET 网页中显示动态生成的图片
- Asp.Net 中 动态生成 Excel
- 关于ASP.net中生成图形验证码
- 在ASP.Net中生成Excel
- 在asp.net中动态生成web控件【文章来源:开店乐KaiDianLe.Com】
- asp.net在Render中加载Html来动态生成或者修改页面
- asp.net在表格中动态生成一个可以链接到另外一个页面的图片
- 模拟OICQ的实现思路和核心程序(三)
- C# 2.0 Specification (泛型三)
- 一个显示天气预报的程序
- 多重條件組合查詢(二)
- 文章推荐系统(三)
- 在ASP.NET中动态生成图形(转)
- 多重條件組合查詢(一)
- 一个SDK里做聊天室的例子(2)
- 文章推荐系统(二)
- ms--help
- 在PHP中利用XML技术构造远程服务(下)
- 续
- 推荐文章系统(一)
- Hiding/Manipulating Databound Items(转载www.aspallia