ASP.NET 繪出統計圖表 - ZedGraph Win / Web - II -新專案

摘要: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
Imports ZedGraph.Web
Imports System.Drawing

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)  
                                             '
必須跟第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

------------

~ End