參考文獻:http://www.cnblogs.com/ynyhn/articles/504023.html
英文文獻:http://www.codeproject.com/KB/graphics/zedgraph.aspx 更全面
序言
ZedGraph保持作爲建立在SourceForge的開源項目。基於這個立場(又找不到合適的詞翻譯了!—_—),你可以獲得項目信息、文件、更新支持和所有發佈版本。
一套圖表實例連同所有的源代碼對於SourceForge也是同樣有用的。
背景
世面上有許多的圖表組件,但是沒有一個符合我的要求。我發現MSChart太詭異,而切許多配置選項沒有我所需要的適應性用來完成一個漂亮的視覺效果。當然大多數的商業包能夠作到這些,但是我需要一些免費的東西,所以ZedGragh誕生了。
這些類將在一個窗體上產生一個線條,條型,或者圖表,並給予一個矩形和一些數據點。ZedGraph 可以構建二維的線性/離散的圖形,橫/縱座標軸,花哨的條形圖,精緻的百分比條形圖,錯誤圖和餅型圖——他不能構建三維的外觀或圖表。最近還加入了對於ASP.NET頁面中圖形處理方法。可以參看下載資料中的關於ASP的文檔。所繪製的圖表能夠配上軸標籤和標題,一個圖例,文本標籤和箭頭,圖片等等。演示項目中的標記包括能夠通過自由拖放自由改變大小的Normski'sGDIDB double-buffering class。(這裏翻譯不清楚,大概意思就是圖表能自由調整大小吧)。嘗試根據可見窗體來達到尺寸要求。
文檔(ZedGraph.chm) 包括了完整的類組件源代碼。涉及更多的詳細資料——ZedGraph有很多在說明文檔中沒有說明的配置選項。這些內容在網上可以找到。
使用代碼
在簡單的圖形中,一個圖表是通過一些簡單的步驟創建的。你可以通過一個類庫,一個窗體控件,或者一個ASP.NET網頁控件,這些方式中的任何一種來使用ZedGraph。本文將主要介紹類庫的使用。當然,你可以使用GraphPane 或者MasterPane等工具來完成與ZedGragh相同的功能
。
作爲Web控件使用ZedGraph
ZedGraph現在具有一個可以應用到ASPX的Web控件類。提供下載演示項目示範了這個功能。要使用Web控件,你的頁面必須包含以下圖片:
<img src="graph1.aspx" />
在這個例子中,graph1.aspx是一個聲名了這個控件的文件,這個聲明要包含一個叫做“graph1.aspx.cs ”的後臺代碼文件,這個文件實際上負責繪製圖形。所以,ZedGraph.dll文件必須未於和graph1.aspx同級的"bin"目錄下。
作爲用戶控件使用ZedGraph
可以在Visual Studio .NET的工具箱中添加ZedGraph控件。首先,打開Visual Studio .NET,新建一個Windows項目,打開窗體設計器顯示當前窗口。要查看工具箱,使用主菜單的視圖-工具箱命令。
右鍵單擊工具箱上的“我的用戶控件”或“組件”欄,然後選擇“添加/刪除項”選項。點擊“瀏覽”,選取“ZedGraph.dll ”文件。一旦文件添加了,你可以看到一個ZedGraphControl選項在工具欄中。將它拖到窗體設計器中,拉伸到合適大小。這樣就在你的窗體中創建了一個ZedGraph控件。這個控件具備了ZedGraph控件的所有功能。一個ZedGraph控件就這樣簡單的創建了,他帶有一個初始的圖形窗格(又想不到詞...)。ZedGraph.dll文件可以作爲用戶控件或組件。一些示例程序示範了這個用戶控件不同編程語言(Visual
Basic, Visual C#, and Visual C++)的用法。本文只關注組件的用法。
注:在C#2008中添加的過程是這樣的:選項卡上右鍵,選擇“選擇項”菜單,點擊瀏覽,
選取“ZedGraph.dll ”文件
。
作爲組件使用ZedGraph
在你的項目中添加組件,步驟如下:
1.在項目中,選擇項目菜單下的“添加”選項。通過瀏覽按扭找到ZedGraph.dll,點擊OK。這將使你的項目包含了ZedGraph的所有功能。
2.在主窗體代碼中添加使用ZedGraph的代碼. using ZedGraph;
3.用如下的聲明在窗體類定義代碼中添加窗格(這個詞總不好翻譯,意思就是說ZedGraph畫出來的那個表圖形):
4.在你的窗體Load方法(如:Form1_Load() )中添加下列代碼:
GraphPane myPane = zedGraphControl1.GraphPane;
// get a reference to the GraphPane
// Set the Titles
myPane.Title= "My Test Graph\n(For CodeProject Sample)";
myPane.XAxis.Title = "My X Axis";
myPane.YAxis.Title = "My Y Axis";
// Make up some data arrays based on the Sine function
double x, y1, y2;
PointPairList list1 = new PointPairList();
PointPairList list2 = new PointPairList();
for (int i = 0; i < 36; i++)
{
x = (double)i + 5;
y1 = 1.5 + Math.Sin((double)i * 0.2);
y2 = 3.0 * (1.5 + Math.Sin((double)i * 0.2));
list1.Add(x, y1);
list2.Add(x, y2);
}
// Generate a red curve with diamond
// symbols, and "Porsche" in the legend
LineItem myCurve = myPane.AddCurve("Porsche",list1, Color.Red, SymbolType.Diamond);
// Generate a blue curve with circle
// symbols, and "Piper" in the legend
LineItem myCurve2 = myPane.AddCurve("Piper",list2, Color.Blue, SymbolType.Circle);
// Tell ZedGraph to refigure the
// axes since the data have changed
// zedGraphControl1.GraphPane.AddCurve(" ", b, d, Color.Green, SymbolType.Triangle);
zedGraphControl1.AxisChange();
zedGraphControl1.Invalidate();
AxisChange() 方法在你的增加或者改變數據時被調用,它通知ZedGraph重新計算所有軸的範圍.(AxisChange() 方法可以添加自己的代碼,他將根據當前配置更新軸的範圍),ZedGraph提供了一個參數較少的AxisChange() 方法,因此你也可以不調用CreateGraphics()方法.
5.爲了確保圖形被繪製,你可以添加一行代碼到你的Form_Paint() 方法(Paint事件調用的方法):
myPane.Draw( e.Graphics );
以上的代碼產生的輸出如下: