微軟Chart控制項導學 從頭開始

2021-05-18 06:22:30 字數 3295 閱讀 8780

微軟在

.net 3.5

的時候出了乙個

chart

控制項,但是那時候要單獨安裝才可以使用,在

.net 4.0

中,微軟將這個控制項整合到了

visual studio 2010

中,現在可是大大的提高了

.net

做報表的能力,是乙個非常有用的控制項。呵呵,越有用的東西用起來就越不容易,這幾天在研究這個東西,就把自己所學到的東西大家分享一下。

一..net 3.5

該圖表控制項支援多種圖表,如餅圖,柱狀圖,曲線圖,散點圖,雷達圖,面積圖,**圖等,同時支援

winform

和asp.net

。該控制項只能用在

.net framework 3.5

和4.0

上。據說在

.net 2.0

上也是有的,但是要花錢,呵呵。

控制項:microsoft .net framework 3.5

的microsoft

圖表控制項

(microsoft chart controls for microsoft .net framework 3.5)

包含英文版,中文版。上面提供的鏈結是中文版的,可以更改為英文版。文件:

microsoft chart controls for .net framework documentation

這個只有英文的,沒找到中文的。只是些函式的

api,只要英文好一點很有用處。

這個據說安裝後還要配製什麼的,沒有用過,自己也不太清楚,想用的可以去網上找些資料。

二..net 4.0 chart

控制項使用基礎

新建乙個

asp.net

的**後,在工具欄中的

data

分類中,就會出現乙個

chart

控制項,和其他控制項一樣,你可以把它拖到頁面上,就可以新增乙個「圖表」了。

生成的**如下:

**段1

2.1chart

控制項組成

由上面的**段可以清楚的看到,

chart

控制項由series

(資料列)和

chartarea

(成圖區域)兩部分組成(這兩部分的命名是自己的理解,現在還沒有在網上看到中文的命名)。這兩部分都是可以有乙個或者多個的,例如當乙個「圖表」中要畫多條曲線的時候我們就可能會用到多個「資料列」,並且把多個資料列的

chartarea

屬性設定為指定的「成圖區域」。當我們想在乙個「圖表」中分區域多形式的顯示一種或多種資料的時候,我們就需要多個

chartarea

了。(從

xml元素的命名也是可以看出這一點的,要不然在

和前面就不會再有一層複數的

xml標籤了。)

對於簡單的圖表,我們只用預設的樣式就足夠了,所以可以不用對

chartarea

進行太多的修改,只要在「資料列」中新增一定數量的點就可以成圖了,相當簡單。

2.2向

chart

中新增資料點

方法一:用

xml在設計時直接新增資料點。

先找乙個例子,下面的例子是

nba幾個隊伍勝利的場資料的「圖表」,**如下:

**段2

生成的圖表如下所示:

圖表1

對幾個重要的屬性解釋如下:

axislabel:當

x軸沒有值時可以設定這個值,會在

x軸上生成一些文字,效果就如上面所示。

xvalue

:這個更容易理解,乙個點的

x座標值。

yvalues

:一般情況下只用乙個

yvalue

就可以生成圖表了,但是在某些情況下要兩個甚至多個值,多個值是只有當圖表型別為

bubble, candlestick

和stock

時才有意義。

方法二:在程式執行時動態新增資料點。

下面是**段:

**段3

生成的圖形還是上面那個,就不多說了。和上面用

xml生成圖表結構是一樣,但注意最後要加入

form1

中,否則無法顯示。

上面的兩個例子是比較極端的,在實際應用時最多的是兩種方法的結合。一般情況下我們知道**要有乙個報表,但是其中的資料是動態的,所以可以在設計時用

xml生成一部分的圖表(無資料的圖表),然後在程式中填充資料。

有人會覺得用程式來新增點是一件很麻煩的事,事實上也並不是太麻煩,在實際應用時多是在迴圈中使用加點的動作,所以可以很快的生成大量的點。

方法三:資料繫結。

在很多的情況下,我們都面臨著這樣一種情況,那就是從資料庫中讀取資料然後再生成圖表。更普遍的是我們將陣列中的資料拿出來成圖儘管可以用上面的方法實現,但是如果能讓自己的程式更簡單那麼何樂而不為呢?

首先向頁面中新增乙個

chart

圖表:**段如上面的**段一所示。

然後我們連線

northwind

資料庫(沒有這個資料庫可以去下乙個,實在不想下自己編點資料也行),然後用

databindtable

來進行繫結。**段如下所示:

這樣就生成了下面的這個表:(資料和文字是正常的,但是讓我不明白的是顏色是橙色的,以前的預設色不是藍色嘛!!!)。

上面的databindtable

函式有兩個過載,具體的情況可以參照文件,第乙個變數不一定要是

sqldatareader

,只要實現了

ienumerable

介面就行了。對於陣列元素的繫結,在下一節的教程中再做詳述。

還有一種繫結方式就是:

chart1.series("

series1

").xvaluemember = "categoryname" ;

chart1.series("

series1

").yvaluemembers = "productcount" ;

chart1.datasource = myreader ;

chart1.databind();

用datasource

和databindtable

的不同就在於用

datasource

還要進一步的指定x和

y軸所對應的值。

現在我們就可以很輕鬆的做出乙個符合自己心意的圖表了吧。

想說這個是自己原創的有點不太好意思,想說這個是翻譯自己又做了好多自己的工作在裡面,而且以前是針對.net 3.5的,但是.net 3.5和4.0對本文沒有太大的影響,把參考的文章也放出來:

從頭開始學JDK String

目錄 string 倒序 string 建構函式 string equals string 記憶體 string hashcode string startswith string endwith string indexof string lastindexof string substring ...

從頭開始學MFC

一 win32專案設計 類似於console控制台程式,win32視窗程式的入口函式類似於main 函式,稱之為winmain函式 int winapi wwinmain hinstance hinstance,例項控制代碼 hinstance hprevinstance,前乙個例項控制代碼 pws...

從頭開始學Redis

第一章 概述 1.1 redis之簡介 1.2 redis之安裝 第二章 api 2.1 redisapi之簡介 2.2 redisapi之string 2.3 redisapi之hash 2.4 redisapi之list 2.5 redisapi之set 2.6 redisapi之zset 第三...