在ASP.NET中動態生成圖形

發表于:2008-10-13來源:作者:點擊數: 標簽:Net圖形NETASPnet
.NET有一個很靈巧的特性,就是可以編寫代碼生成動態圖形,然后將生成的圖形保存在磁盤上或者直接將其發送到客戶端的瀏覽器。 一、原理 用.NET生成圖形的 功能 封裝在System.Drawing名稱空間中,它支持多種圖形文件格式,包括:JPEG、GIF、PNG、TIFF、BMP、Pho
.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" %>

  

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97