1. 程式人生 > >利用C#實現條形圖、餅圖的繪製(一)

利用C#實現條形圖、餅圖的繪製(一)

    近日,在編寫一個統計程式的時候,希望通過條形圖、餅圖的形式形象地展現統計資料,為此,專門到sourceforge、codeproject等開源網站閱讀查詢有關資料,在這過程當中,閱讀了一份原始碼,感覺很多東西都可以借鑑,只不過,其最多隻支援10個條形圖的顯示,因為畫布僅有200*200,每個條形圖佔了10,間距又佔了10。對於這一點,筆者感覺不甚滿意,於是決定在參考借鑑原有程式碼的基礎上,做一個更加通用的繪圖程式。當然,因時間有限,筆者只做了針對條形圖、餅圖的實現。至於其他圖形,有興趣的朋友不妨自己實現。本篇文章將介紹條形圖的實現,在另一篇文章中將介紹餅圖的實現。
    為實現這個簡單的繪圖程式,首先構建了一個GraphDrawing專案工程。整個程式的設計思路相對較簡單,通過類BarGraph來實現對條形圖的繪製,通過WinForm窗體來實現對圖形資料的輸入及輸出。此外,還特別增加了一個工具類Utils,裡面包含了公共靜態方法,當前用來獲取圖形繪製的顏色列表。
    整個繪圖程式的實現,均是通過C#中的GDI+來處理的,只要充分利用GDI+中的各種方法,繪製這麼一個相對簡單的圖形也就不成問題了。繪製條形圖大體經過以下幾個步驟:
    (1)建立Graphics物件例項;
    (2)設定圖形及文字的屬性;
    (3)設定畫布和邊框;
    (4)繪製標題文字;
    (5)迴圈繪製條形圖;
    (6)繪製X及Y座標的線條及文字;
    (7)繪製圖例。
    以下是BarGraph類的程式碼示例:

    在WinForm中,呼叫也非常簡單,程式碼示例如下:

最終的條形圖繪製介面效果如下圖所示:

    以上是關於條形圖繪製的粗略介紹,該繪圖程式可適應窗體大小的變化。在後面筆者將會對該程式作進一步完善,以實現對餅圖的繪製。同時,需要說明的是,本繪圖程式的部分實現思路參考了相關原始碼,在此對相關原始碼的作者表示感謝。