.NET控制項ZedGraph使用協助

來源:互聯網
上載者:User
原文地址:
http://www.codeproject.com/csharp/ZedGraph.asp

譯文:

序言

ZedGraph是用於建立任意資料的二維線型、條型、餅型圖表的一個類庫,也可以作為Windows表單使用者控制項和ASP網頁控制項(這裡有個web-accessible 不知道該怎麼翻譯)。這個類庫具有高度的適應性,幾乎所有式樣的圖表都能夠被建立。這個類庫的用法在於通過提供所有圖表屬性的省缺值來保持使用性的簡單。這個類庫包含了基於要繪製的數值範圍內的可選擇適當度量範圍和跨度的代碼。

ZedGraph保持作為建立在SourceForge的開源項目。基於這個立場(又找不到合適的詞翻譯了!—_—),你可以獲得項目資訊、檔案、更新支援和所有發布版本。

一套圖表執行個體連同所有的原始碼對於SourceForge也是同樣有用的。

背景

世面上有許多的圖表組件,但是沒有一個符合我的要求。我發現MSChart太詭異,而切許多配置選項沒有我所需要的適應性用來完成一個漂亮的視覺效果。當然大多數的商業包能夠作到這些,但是我需要一些免費的東西,所以ZedGragh誕生了。

這些類將在一個表單上產生一個線條,條型,或者圖表,並給予一個矩形和一些資料點。ZedGraph 可以構建二維的線性/離散的圖形,橫/垂直軸,花哨的橫條圖,精緻的百分比橫條圖,錯誤圖和餅型圖——他不能構建三維的外觀或圖表。最近還加入了對於ASP.NET頁面中圖形處理方法。可以參看下載資料中的關於ASP的文檔。所繪製的圖表能夠配上軸標籤和標題,一個圖例,文字標籤和箭頭,圖片等等。示範項目中的標記包括能夠通過自由拖放自由改變大小的Normski's GDIDB 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++)的用法。本文只關注組件的用法。

作為組件使用ZedGraph

在你的項目中添加組件,步驟如下:

1.在項目中,選擇項目菜單下的“添加”選項。通過瀏覽按扭找到ZedGraph.dll,點擊OK。這將使你的項目包含了ZedGraph的所有功能。

2.在主表單代碼中添加使用ZedGraph的代碼.

3.用如下的聲明在表單類定義代碼中添加窗格(這個詞總不好翻譯,意思就是說ZedGraph畫出來的那個表圖形):

GraphPane myPane;


4.在你的表單Load方法(如:Form1_Load() )中添加下列代碼:// 在座標(40,40)處建立一個新圖形, 大小為 600x400
    myPane = new GraphPane( new Rectangle( 40, 40, 600, 400 ),
        "My Test Graph\n(For CodeProject Sample)",
        "My X Axis",
        "My Y Axis" );

    // 設定初始資料
    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 );
       }

    // 建立紅色的菱形曲線
    // 標記, 圖中的 "Porsche" 
    LineItem myCurve = myPane.AddCurve( "Porsche",list1, Color.Red, SymbolType.Diamond );

    // 建立藍色的圓形曲線
    // 標記, 圖中的 "Piper"    
   LineItem myCurve2 = myPane.AddCurv( "Piper",list2, Color.Blue, SymbolType.Circle );

    // 在資料變化時繪製圖形
     myPane.AxisChange( this.CreateGraphics() );

AxisChange() 方法在你的增加或者改變資料時被調用,它通知ZedGraph重新計算所有軸的範圍.(AxisChange() 方法可以添加自己的代碼,他將根據當前配置更新軸的範圍),ZedGraph提供了一個參數較少的AxisChange() 方法,因此你也可以不調用CreateGraphics()方法.

5.為了確保圖形被繪製,你可以添加一行代碼到你的Form_Paint() 方法(Paint事件調用的方法):myPane.Draw( e.Graphics );

以上的代碼產生的輸出如下:

好了,文章翻譯到這裡也差不多了,當然原文還有很多內容,不過那些是進階應用程式部分了,到這裡算瞭解了ZedGraph的用法,後面的內容很容易看懂了,這裡就不再翻譯了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.