標籤:style http io color ar 使用 sp strong 檔案
在.NET程式/網站中如果要產生統計圖表/圖形,以前可以採用OWC(Office Web Components),如OfficeXP組件OWC10、Office2003組件OWC11。OWC採用COM-DLL方式的調用介面,但主要缺憾 是產生的圖片不夠美觀,不夠“現代”。
現在,隨著.NET 3.5的發布,其引入了新的MSChart組件,當然,已經徹底的.NET化了。
一、要使用這個新的圖形組件,需要.NET 3.5 SP1環境。
下載安裝以下檔案,分別是組件安裝包、中文語言套件、VS外掛程式。
MSChart.exe
MSChartLP_chs.exe
MSChart_VisualStudioAddOn.exe
還有官方的文檔,但目前是英文的。
二、言歸正傳,現在來搞清楚ImageLocation屬性的意思。
Chart.ImageLocation
名稱空間:System.Web.UI.DataVisualization.Charting
程式集:System.Web.DataVisualization(system.web.datavisualization.dll)
在VS2008中,其預設值為:ChartPic_#SEQ(300,3)
這個好像不太好理解啊:(
好吧,先看幾個關聯屬性吧
1、Chart.RenderType
此屬性決定MSChart產生的圖形以何種方式送到用戶端,有三種:
ImageTag,圖形在服務端儲存為臨時檔案,並將臨時檔案的URL作為HTML中<IMG>標籤的SRC屬性值。而此臨時檔案的URL規則及臨時檔案如何產生可由ImageLocation屬性確定。
BinaryStreaming,不在服務端產生圖形檔案,<IMG>標籤的SRC屬性值將指向另一個負責產生圖形的.aspx頁面。
ImageMap,不顯示實際的圖形,僅建立圖片熱區(image map)。
預設值是ImageTag,就是會在服務端產生臨時檔案。
2、Chart.ImageStorageMode
此屬性決定產生圖形的儲存方式,有兩個選項:
UseHttpHandler,預設值,由HTTP處理常式儲存圖形檔案到記憶體或檔案。但產生的檔案用戶端是不能夠直接能過URL訪問到的,<IMG>標籤的SRC屬性值形如:
ChartImg.axd?i=chart_67fdbfec448349e686916b97f1351e90_0.png&g=f96eecccd0334d70b8c9b0702894182b
並不指向服務端一個實體儲存體位置。
UseImageLocation,作為臨時檔案儲存體在服務端指定位置。在用戶端可以通過URL直接擷取到圖片。可進一步指定圖片儲存目錄位置。圖片檔案名稱可以是隨機性的也可以是固定的。
3、Chart.ImageType
產生圖形檔案的格式,可以是BMG、JPEG、PNG、EMF。
現在回到Chart.ImageLocation,其實在上面已經提到了它的作用,就是決定圖形臨時檔案的URL規則及臨時檔案如何產生。
(1)、這個屬性只有在Chart.ImageStorageMode=UseImageLocation才有效。
(2)、當Chart.RenderType=ImageTag時,圖形檔案產生後會在服務端儲存。檔案格式和副檔名由Chart.ImageType指定。而檔案名稱則可以是靜態不變或動態變化的。靜態就是使用一個固定名稱,動態則使用一個隨機名稱,可以通過“#”標記來選擇使用GUID或指定數字序列來確定一個唯一的檔案命名。
(3)、預設值ChartPic_#SEQ(300,3)的含義是
(4)、ImageLocation命名舉例,假設Chart.ImageType=Png
屬性值 產生圖形檔案URL
----------------------------------------------------------------
ChartPic_#SEQ(300,3) ChartPic_000003.png?d155074d-2120-49db-a95c-6a4a61911315
ChartPic ChartPic.png?27194803-a8a9-4c3e-81a7-5534a279dbe0
ChartPic#NOGUIDPARAM ChartPic.png
(5)、預設值ChartPic_#SEQ(300,3)說明
ChartPic_是首碼,#SEQ是數字序列,300表示最多允許儲存300個檔案,3代表3秒種,表示向事件記錄中寫入警告資訊的時間限制。
三、web.config關聯配置項
只有當Chart.ImageStorageMode=UseHttpHandler時,web.config中的配置才會生效。即指定由HTTP處理常式來儲存圖形檔案時,web.config中的配置才會生效。
例如:
<add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:/TempImageFiles/;deleteAfterServicing=false; webDevServerUseConfigSettings=false" />
顯然,其中c:/TempImageFiles/就是HTTP處理常式來儲存圖形檔案的目錄。
deleteAfterServicing,在圖片被瀏覽器成功下功下載後,確定伺服器片是否刪除,預設值為false。
但請注意,如果不指定deleteAfterServicing,圖片是不會被儲存為檔案的,應當只是暫存在記憶體中。
webDevServerUseConfigSettings,當在VS程式開發伺服器中,即運行在完全信任層級(full trust level)環境時,決定產生的圖片是否被儲存在記憶體中。
四、注意檔案夾的許可權
只要在服務端產生圖形檔案,無論儲存在哪個目錄下,ASP.NET帳戶都需要擁有該目錄的寫入許可權。
[轉] .NET 3.5中MSChart組件的ImageLocation屬性含義