熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

在ASP.NET中動態生成圖形

2013-11-13 12:19:27  來源: .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>標記就是它來進行實際的圖形生成工作


From:http://tw.wingwit.com/Article/program/net/201311/15657.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.