
2007年3月21日
系列最后一章,柱形圖的制作
。
?
一、
生成柱形圖
C1WebChart1.ChartGroups.Group0.ChartType?
=
?Chart2DTypeEnum.Bar;
設(shè)置圖表類(lèi)型。
?
對(duì)于數(shù)據(jù)源的添加和其他圖表相同,這里就不再說(shuō)明。
?
二、
柱形圖的樣式設(shè)計(jì)
1
)填充色的改變
ChartDataSeries?series1?
=
??C1WebChart1.ChartGroups[
0
].ChartData.SeriesList.AddNewSeries();
series1.FillStyle.Color1?
=
?Color.Red;
獲取了
ChartDataSeries
對(duì)象之后,設(shè)置
FillStayle
的
Color1
屬性即會(huì)改變柱形的填充色。
?
2
)漸變色彩的實(shí)現(xiàn)
//
1、設(shè)置圖表顏色填充方式為漸變方式:設(shè)置FillType?為Gradient(默認(rèn)為SolidColor方式,單一色填充)
series1.FillStyle.FillType?
=
FillTypeEnum.Gradient;
//
2、設(shè)置漸變效果的樣式:設(shè)置GradientStyle為GradientStyleEnum的枚舉值,這里設(shè)置為垂直漸變
series1.FillStyle.GradientStyle?
=
?GradientStyleEnum.Horizontal;
//
3、設(shè)置漸變顏色:Color1為圖表默認(rèn)顏色,如果使用默認(rèn)方式填充,圖標(biāo)顏色將為Color的顏色。
series1.FillStyle.Color1?
=
?Color.BurlyWood;
//
Color2為漸變色彩(使用Gradient或Hatch方式填充圖表顏色需設(shè)置Color2)。
series1.FillStyle.Color2?
=
?Color.Red;
漸變效果需要設(shè)置
FillType
為
Gradient
類(lèi)型,并且必須設(shè)置
Color2
屬性。
?
漸變效果圖如下:
漸變效果源碼下載地址:
http://m.tkk7.com/Files/kdboy/ChartBar1.rar
?
?
3
)多種顏色填充效果
說(shuō)明:對(duì)于同一序列的柱形只能使用相同填充顏色,實(shí)現(xiàn)多種顏色填充,只能使用不同數(shù)據(jù)序列。所以,假如你只有一組數(shù)據(jù),那么可以使用這種效果來(lái)制作圖表。
?
//
1、需設(shè)置圖表為疊加樣式:Stacked設(shè)為ture?(否則所有系列將單列顯示,柱形圖會(huì)變細(xì))
C1WebChart1.ChartGroups.Group0.Stacked?
=
?
true
;
首先,需要設(shè)置圖標(biāo)為疊加樣式。
?
//
2、類(lèi)似餅圖設(shè)置,為每條柱形圖創(chuàng)建序列
for
(
int
?i
=
0
;?i?
<
?dv.Count;?i
++
)
{
???????ChartDataSeries?series?
=
?C1WebChart1.ChartGroups[
0
].ChartData.SeriesList.AddNewSeries();
???????
//
設(shè)置序列長(zhǎng)度為1(即每條序列均只有一條數(shù)據(jù)),這點(diǎn)與餅圖設(shè)置相同
???????series.PointData.Length?
=
?
1
;
???????
//
設(shè)置每個(gè)序列所在x軸位置,讓每個(gè)序列獨(dú)立顯示。與餅圖設(shè)置,只有這點(diǎn)區(qū)別。
???????series.X[
0
]?
=
?i;
???????
//
設(shè)置數(shù)據(jù)序列的y值
???????series.Y[
0
]?
=
?
float
.Parse(dv[i][
"
value
"
].ToString());?????????????????????????
???????
//
設(shè)置序列圖例顯示文字。
???????series.Label
=
dv[i][
"
name
"
].ToString();
}
其次,需要將每條數(shù)據(jù)放置在不同的數(shù)據(jù)序列中,該序列顏色系統(tǒng)會(huì)自動(dòng)分配。也可以在這里設(shè)置每個(gè)序列的顏色。
?
效果圖如下:
多種顏色填充
源碼下載地址:
http://m.tkk7.com/Files/kdboy/ChartBar2.rar
?
?
三、
柱形圖的
3D
效果
與餅圖的
3D
效果相同,只需增加一下代碼即可:
//
設(shè)置3D效果
C1WebChart1.ChartGroups[
0
].Use3D?
=
?
true
;
//
3D圖形的深度
C1WebChart1.ChartArea.PlotArea.View3D.Depth?
=
10
;
//
以y軸作為參照的?旋轉(zhuǎn)角度(這里可以看到這個(gè)屬性的效果)
C1WebChart1.ChartArea.PlotArea.View3D.Rotation?
=
20
;
//
以x軸作為參照的?傾斜角度
C1WebChart1.ChartArea.PlotArea.View3D.Elevation?
=
30
;
//
設(shè)置3D圖形的陰影效果,默認(rèn)是ColorDark(比前景色深),還可以指定為ColorLight(比前景色淺),None(不指定,顏色深淺一樣)
C1WebChart1.ChartArea.PlotArea.View3D.Shading?
=
?ShadingEnum.ColorDark;
?
效果圖如下:
源碼略。
?
四、
其他。
對(duì)于柱形圖的邊線,可以設(shè)置
ChartGroup
的
ShowOutline
屬性來(lái)禁止顯示。改變其顏色,我也不知如何設(shè)置。
代碼如下:
C1WebChart1.ChartGroups[
0
].ShowOutline?
=
?
false
;
效果就是這樣:
?
五、
結(jié)束
關(guān)于
WebChart
就介紹到這里,謝謝關(guān)注。
這次演示餅圖制作,簡(jiǎn)單介紹餅圖的樣式效果及
PlotArea
對(duì)象的一些屬性。
?
一、生成餅圖
C1WebChart1.ChartGroups.Group0.ChartType?
=
?Chart2DTypeEnum.Pie;
設(shè)置圖表類(lèi)型。?
?
DataSet?ds?
=
?GetDataSet();
DataView?dv?
=
?
new
?DataView(ds.Tables[
"
sanguo
"
]);
//
清除圖表所有數(shù)據(jù)序列
C1WebChart1.ChartGroups[
0
].ChartData.SeriesList.Clear();
這里和折線圖一樣。
?
for
(
int
?i
=
0
;?i?
<
?dv.Count;?i
++
)
{
???????ChartDataSeries?series?
=
?C1WebChart1.ChartGroups[
0
].ChartData.SeriesList.AddNewSeries();
???????series.PointData.Length?
=
?
1
;
???????series.Y[
0
]?
=
?
float
.Parse(dv[i][
"
value
"
].ToString());
}
為圖表添加數(shù)據(jù)。
這里與折線圖不同的是餅圖只需設(shè)置坐標(biāo)軸的
Y
值即可,所有序列的相同索引的數(shù)據(jù)組合成一個(gè)餅圖。這里將每一條數(shù)據(jù)放在一個(gè)新的數(shù)據(jù)序列里,并且每個(gè)序列都只有一個(gè)元素。這樣,所有數(shù)據(jù)就會(huì)呈現(xiàn)在一個(gè)餅圖中。如圖:
這個(gè)就是默認(rèn)的餅圖樣式,是不是少點(diǎn)什么呢?
接下來(lái),介紹樣式的設(shè)置。
?
二、餅圖樣式設(shè)計(jì)
1)?
添加圖例
C1WebChart1.Legend.Visible?
=
?
true
;
設(shè)置
Legend
對(duì)象的
Visible
屬性為
true
,圖例就會(huì)顯示出來(lái)。這時(shí)圖例的標(biāo)簽?zāi)J(rèn)為序列的名稱(chēng)。
?
for
(
int
?i
=
0
;?i?
<
?dv.Count;?i
++
)
{
???????ChartDataSeries?series?
=
?C1WebChart1.ChartGroups[
0
].ChartData.SeriesList[i];
???????series.Label
=
dv[i][
"
name
"
].ToString();
}
設(shè)置圖例標(biāo)簽的顯示內(nèi)容。為了代碼簡(jiǎn)潔也可以在添加數(shù)據(jù)的同時(shí)設(shè)置。
?
另外,我們還可以使用
Legend
對(duì)象(圖例對(duì)象)設(shè)置圖例的顯示樣式。如:
C1WebChart1.Legend.Compass?
=
?CompassEnum.West;
設(shè)置圖例顯示位置。
?
其他一些屬性,例如
Orientation
設(shè)置圖例顯示方向(以縱向顯示或橫向顯示)等,不作詳細(xì)介紹,可自己嘗試使用。
?
2)?
為了讓數(shù)據(jù)更加直觀,可在餅圖添加標(biāo)簽
for
(
int
?i
=
0
;?i?
<
?dv.Count;?i
++
)
{
???????C1.Win.C1Chart.Label?lbl?
=
?C1WebChart1.ChartLabels.LabelsCollection.AddNewLabel();
???????lbl.Text?
=
?
string
.Format(
"
{0}%
"
,
float
.Parse(dv[i][
"
value
"
].ToString()));
???????lbl.Compass?
=
?LabelCompassEnum.Radial;
???????lbl.Offset?
=
?
20
;
???????lbl.Connected?
=
?
true
;
???????lbl.Visible?
=
?
true
;
???????lbl.AttachMethod?
=
?AttachMethodEnum.DataIndex;
???????AttachMethodData?am?
=
?lbl.AttachMethodData;
???????am.GroupIndex??
=
?
0
;
???????am.SeriesIndex?
=
?i;
???????am.PointIndex??
=
?
0
;
}
首先,實(shí)例化標(biāo)簽并設(shè)置標(biāo)簽內(nèi)容及相關(guān)屬性。
然后使用
AttachMethodData
對(duì)象設(shè)置標(biāo)簽附加在圖表中的位置。
GroupIndex
是指圖表索引。(第一篇文章提到過(guò)
WebChart
默認(rèn)支持
2
個(gè)圖表)
SeriesIndex
是指序列索引。
PointIndex?
是指序列中的元素索引。
?
設(shè)置完成,效果圖如下:
?
三、
3D
效果的實(shí)現(xiàn)
。
1
)開(kāi)啟
3D
效果。
C1WebChart1.ChartGroups[
0
].Use3D?
=
?
true
;
以
3D
樣式顯示,該步驟必須存在。
?
3)?
設(shè)置
3D
樣式
//
3D圖形的深度
C1WebChart1.ChartArea.PlotArea.View3D.Depth?
=
20
;
//
以y軸作為參照的?旋轉(zhuǎn)角度(只有x軸,這個(gè)屬性設(shè)置無(wú)效)
C1WebChart1.ChartArea.PlotArea.View3D.Rotation?
=
90
;
//
以x軸作為參照的?傾斜角度
C1WebChart1.ChartArea.PlotArea.View3D.Elevation?
=
30
;
//
設(shè)置3D圖形的陰影效果
C1WebChart1.ChartArea.PlotArea.View3D.Shading?
=
?ShadingEnum.ColorDark;
3D
樣式是使用
PlotArea
對(duì)象的View3D屬性來(lái)設(shè)置。
主要就是以上四個(gè)屬性的設(shè)置。
顯示效果如下:
?
四、補(bǔ)充概念
或許之前說(shuō)到的各圖形區(qū)域比較容易混淆,下面以圖形介紹個(gè)圖形區(qū)域:
?
灰色
為整個(gè)
WebChart
區(qū)域,對(duì)應(yīng)對(duì)象就是
this.C1WebChart1
。
桔黃色
為圖表區(qū)域,對(duì)應(yīng)對(duì)象為
this.C1WebChart1.ChartArea
。
綠色
為繪圖區(qū),對(duì)應(yīng)對(duì)象為
this.C1WebChart1.ChartArea.PlotArea
。
紅色
為圖表的上標(biāo)題,對(duì)應(yīng)對(duì)象為
this.C1WebChart1.Header
。
藍(lán)色
為圖表的下標(biāo)題,對(duì)應(yīng)對(duì)象為
this.C1WebChart1.Footer
。
?
使用相關(guān)對(duì)象可以設(shè)置個(gè)區(qū)域的樣式效果。了解這些可以使用屬性窗口快速設(shè)置一些簡(jiǎn)單樣式。
?
五、結(jié)束
我希望通過(guò)一些實(shí)例能夠比較全面的介紹
WebChart
的主要對(duì)象的使用。在下一次,會(huì)演示柱形圖的制作。本次實(shí)例的完整代碼下載地址如下:
?http://m.tkk7.com/Files/kdboy/ChartPie.rar