[转] .NET 3.5中MSChart组件的ImageLocation属性含义
在.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帳戶都需要擁有該目錄的寫入權限。
轉載于:https://www.cnblogs.com/Vennet/p/4072830.html
總結
以上是生活随笔為你收集整理的[转] .NET 3.5中MSChart组件的ImageLocation属性含义的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++知识点(六)数组、指针与字符串导学
- 下一篇: ASP.NET Core 实战:Linu