摘要:ASP.NET 繪出統計圖表 - ZedGraph Win / Web - II -新專案
前一篇「ASP.NET 繪出統計圖表 - ZedGraph Win / Web - I」目的在說明怎麼在 VS.NET 環境下安裝 ZedGraph 函示庫,而此篇的目的是要介紹如何在一的專案裡來使用 ZedGraph。 相關下載及說明文件,請參考前一篇。 我的例子是以一個新專案的方式建立,已存在之專案加入方式亦同。 Step1:初始的環境,還未載入 ZedGraph 的函式。 Step2:從工具列中拉取「ZedGraphWeb」元件到 aspx 程式中 你就會發現在「Solution explorer」中的 References、bin 目錄下都自動增加了 ZedGraph 等資料 既然都自動加了,是不是可以執行了呢?哦~NO!你會得到下面的錯誤訊息 錯誤訊息:「System.IO.DirectoryNotFoundException: Could not find a part of the path 'D:\project\ZedGraph1\ZedGraphImages\ZedGraphWeb1848cad32-e1c2-4259-86da-8b6b4e505cd4.png'. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) at ZedGraph.Web.ZedGraphWeb.Render(HtmlTextWriter output) 」 這是什麼錯誤阿?從錯誤訊息中有點難分辨是那個問題造成的,其實~簡單的很 因為使用 ZedGraph DLL 會預設將產出的圖檔放在「~/ZedGraphImages/」目錄,但並沒有該目錄存在,所以會給這樣的錯誤訊息 Step3:建立 ZedGraphImages 子目錄 把子目錄 ZedGraphImages 建好後,就可以正常執行,並得到下面的結果。 ☆☆ 請不要以為程式聰明的幫你把結果跑出來了,你都還沒給數據哪來的圖阿,這個是 ZedGraph 預設的效果,你沒給任何值他就會跑出這個圖出來。 ---以上是環境建立的基本設定---再來就是要開始撰寫相關的程式碼了------- Step4:載入3個函式庫 Imports ZedGraph Step5:選取「ZedGraphWeb1」 物件,然後選「RenderGraph」事件 這次所放入的程式碼,是 ZedGraph 所提供的範例程式片段。請注意底下圖紅框中的名稱,可能跟你 .NET 預設帶出來的名稱不同,請修改第3個 ByVal 變數名稱使其相同 咦?不是都載入好函式庫了嗎?怎麼還會有錯誤 這個錯誤是因為少了一個 reference Step6:必須再手動把 ZedGraph.dll 加入參考 加入 reference 後就可以在 Solution Explorer 看到,並且錯誤訊息也消失了 Step7:再執行看看~嘿嘿,可以正常的執行了。 Private Sub ZedGraphWeb1_RenderGraph(ByVal webObject As ZedGraph.Web.ZedGraphWeb, ByVal g AsSystem.Drawing.Graphics, ByVal masterPane As ZedGraph.MasterPane) Handles ZedGraphWeb1.RenderGraph Dim myPane As GraphPane = masterPane(0) ------------ ~ End
Imports ZedGraph.Web
Imports System.Drawing
----所插入的程式碼片段-----------
'必須跟第3個傳遞參數名稱對應
myPane.Title.Text = "中文測試" '圖表標題
myPane.XAxis.Title.Text = "X 軸" ' X 軸說明文字
myPane.YAxis.Title.Text = "Y 軸" ' Y 軸說明文字
Dim list As New PointPairList() '儲存 x y z 座標值
Dim i As Integer, x As Double, y As Double, z As Double '以程式方式產出數值
For i = 0 To 99
x = i
y = Math.Sin(i / 8.0)
z = Math.Abs(Math.Cos(i / 8.0)) * y
list.Add(x, y, z)
Next i
' ^^^ 上半部給圖框名稱及產生數據 ^^^
' ---## StickItem 是本利子所採用的統計圖樣式 ##----
' <<< 下半部選擇 圖樣式 並設定相關參數
Dim myCurve As StickItem = myPane.AddStick("條狀代表的涵意", list, Color.Blue) '圖說 , 內容值 , 顏色
myCurve.Line.Width = 2.0F '線寬度
myPane.XAxis.MajorGrid.IsVisible = True '是否顯示 X軸 間隔線
myPane.XAxis.Scale.Max = 100 'X軸 最大範圍
myPane.Chart.Fill = New Fill(Color.White, Color.LightGoldenrodYellow, 45.0F)
masterPane.AxisChange(g) 'g As System.Drawing.Graphics 把圖繪出
End Sub