c# chart 各个属性_C# Chart控件,chart、Series、ChartArea曲线图绘制的重要属性
為避免耽誤不喜歡這種曲線圖效果的親們的時間,先看一下小DEMO效果圖:
先簡單說一下,從圖中可以看到一個chart可以繪制多個ChartArea,每個ChartArea都可以繪制多條Series。ChartArea就是就是繪圖區(qū)域,可以有多個ChartArea疊加在一起,series是畫在ChartAarea上的,Series英文意思是“序列、連續(xù)”,其實就是數(shù)據(jù)線,它可以是曲線、點、柱形、條形、餅圖...可以注意該chart當(dāng)數(shù)據(jù)非常多的時候可以通過鼠標(biāo)選擇查看區(qū)域,進一步拖拽橫縱向滾動條來縮小曲線圖查看。
代碼中的Chart控件的命名是chartData,數(shù)據(jù)源是dt,由于chart屬性太多,不好一一解釋,所以請仔細(xì)看截圖,尤其重視本例用到的屬性
一、數(shù)據(jù)源:
數(shù)據(jù)返回方式是DataSet.Tables[0],即DataTable,也是最基本的數(shù)據(jù)源方式。這里只介紹DataTable綁定數(shù)據(jù)源,很簡單:
chartData.DataSource = dt;
chartData.DataBind();
二、Series:
Series是畫在ChartArea上的線、點、柱形、條形、餅圖,簡單點兒說就是畫在上面的數(shù)據(jù),直接說屬性,
1. “標(biāo)記”:就是數(shù)據(jù)點,某個數(shù)據(jù)值的點。如下圖所示:
MarkerBorderColor????數(shù)據(jù)點邊框的顏色
MarkerBorderWidth????數(shù)據(jù)點邊框的寬度
MarkColor????????????數(shù)據(jù)點的顏色
MakerSize????????????數(shù)據(jù)點的大小,默認(rèn)值為0數(shù)據(jù)點不存在,建議代碼控制
MarkerStep???????????數(shù)據(jù)點顯示的頻率
MarkerStyle??????????數(shù)據(jù)點的樣式,可以是方塊、圓圈、三角、叉子....
2. “標(biāo)簽”:就是現(xiàn)在是在數(shù)據(jù)點旁邊數(shù)據(jù)值
IsValueShownAsLabel????????????????????數(shù)據(jù)值是否顯示,建議代碼控制
SmartLabelStyle????????????????????????數(shù)據(jù)值樣式
SmartLabelStyle.Enabled????????????????直接控制可用不可用,建議不可用
SmartLabelStyle.AllowOutsidePloArea????數(shù)據(jù)值顯示是否允許在外面
其他屬性自己試吧
注意:如果要使用SmartLabelStyle的話,所有的數(shù)據(jù)點的值都會自動找位置顯示出來,如果某一個區(qū)域數(shù)據(jù)點較多,就會直線指示;如果不用的話,數(shù)據(jù)點的值會在數(shù)據(jù)點旁邊顯示,不會有直線。如下圖所示也可以看到AllowOutsidePlotArea的區(qū)別:
3. “Font”:數(shù)據(jù)標(biāo)簽上的字體和樣式
??????
Font??????????????????????標(biāo)簽字體設(shè)置
Font.Unit?????????????????個人設(shè)置此值為Document,自己體會
LabelAngle????????????????標(biāo)簽角度,斜多少度,建議就正著
LabelBackColor????????????標(biāo)簽背景顏色
LabelBorderColor??????????標(biāo)簽邊框顏色
LabelBorderDahStyle???????標(biāo)簽邊框樣式
LabelBorderWidth??????????標(biāo)簽邊框?qū)挾?/p>
LabelForeColor????????????標(biāo)簽字體顏色
其他屬性自己試
?????
真好看
數(shù)據(jù)多的時候本來顯示就亂拉,這樣更是畫蛇添足,建議透明,正常點的顏色就好
3. 空白點:就是連續(xù)的數(shù)據(jù),譬如X軸對應(yīng)Y軸沒數(shù)據(jù),或Y軸對應(yīng)X軸沒數(shù)據(jù),這樣的數(shù)據(jù)點可以對其設(shè)置相應(yīng)的屬性,屬性大多都是上面說過的,自己試一下即可
???????????????
4.?數(shù)據(jù):其實就是就是serie的名字和值類型
??
Name??????????????????就是唯一的名字
XvalueType????????????X軸值類型
YValuesPerPoint???????數(shù)據(jù)點的Y值數(shù)目
YValueType????????????Y軸值類型
其他屬性自己試
默認(rèn)不用設(shè)置就好,主要是X軸和Y軸值類型設(shè)置的是Auto,也就是根據(jù)X軸上的值和Y軸上的值的類型自動匹配,當(dāng)然手動設(shè)置的話不設(shè)錯就行了。
5. 數(shù)據(jù)源:注意這里是Series的數(shù)據(jù)源
注意:
第一,這兩個屬性對應(yīng)的是DataTable的兩個列,也就是一般的X軸對應(yīng)時間,Y軸對應(yīng)數(shù)據(jù)值,但是也要注意對DataTable的每個數(shù)據(jù)單元的值做判斷,尤其是DBNull或空。我這里的數(shù)據(jù)庫的NewDateTime列數(shù)據(jù)類型是DateTime類型,NewFyj是Double類型。
第二,Series的數(shù)據(jù)源和Chart控件的數(shù)據(jù)源有區(qū)別,只有DataTable先綁定了Chart,Series才對應(yīng)到列,否則無法對應(yīng)。
第三,假如用戶需要先查看所有數(shù)據(jù),然后取消某幾條進行數(shù)據(jù)對比,但是不需要重新查詢數(shù)據(jù),推薦賦值string.Empty實現(xiàn),如下圖:
6. 圖表:也就是Serie畫在哪個ChartArea上,ChartType是Serie的圖表類型,也就是畫何種圖,曲線圖、直線圖、點、柱狀圖、餅圖等...
7. 圖例:也就是每個Serie的名字和樣式,只要創(chuàng)建Serie就會自動產(chǎn)生加載在Legend里,里面的屬性可以試一下,如果想調(diào)整Legend的位置,可以去Legend集合里設(shè)置,比較簡單,這里不多說
8. 圖表
9. 映射區(qū):鼠標(biāo)放在數(shù)據(jù)點上出現(xiàn)的小提示,建議用代碼控制
10. 雜項
EmptyPointValue??????????空數(shù)據(jù)點的值做平均還是做零處理
LabelStyle???????????????對標(biāo)簽硬性的規(guī)定顯示在數(shù)據(jù)點旁的哪個位置
11. 軸:也就是X軸和Y軸,X軸有主軸和副軸,Y軸也有主軸和副軸,主軸為Primary,副軸為Secondary。X主軸在下方,Y主軸在右方,X副軸在上方,Y副軸在右方。
三、ChartAreas:
Chart控件里最重要的,每個Serie都畫在ChartArea上,Chart控件可以有多個ChartArea疊加在一起顯示。比如第一個ChartArea繪制的是曲線,第二個畫的柱狀圖或者是什么什么,這也是上面說過的Serie的ChartType,我們也可以把多個Serie畫在一個ChartArea上,但是如果有一個列數(shù)據(jù)單位范圍在500~10000之間的數(shù)據(jù)浮動最大,有一列數(shù)據(jù)單位范圍在0.1~2.0之間,有一列數(shù)據(jù)單位范圍在50~100之間,那畫在同一個ChartArea上顯示的話,0.1到2.0的數(shù)據(jù)會變成一條直線。當(dāng)只有1、2條這樣的數(shù)據(jù)時,可以在Serie中設(shè)置主軸和副軸,但當(dāng)出現(xiàn)多條數(shù)據(jù),多種類型的顯示,就需要多個ChartArea來解決了。由于屬性太多了,撿重點屬性介紹,其他的屬性自己試一下
1. 對齊:ChartArea對齊方式
AlignmentOrientation????????????水平對齊、垂直對齊、全部對齊
AlignmentStyle??????????????????根據(jù)哪種方式對齊
AlignmentWithChartArea??????????和哪個對齊
老實說,沒啥用,可以設(shè)置Position,一會兒在外觀里會說到
2. 三維:自己試試,效果很沉重,不是很好
3. 外觀:可以對ChartArea顏色、邊框、位置的設(shè)置
BackColor???????????????????????ChartArea的背景顏色
BackGradientStyle???????????????背景顏色的漸變方式
BackHatchStyle?????????????????背景陰影
BackImage???????????????????????背景圖片
BackImageAlignment??????????????圖片顯示位置
BackImageTransparentColor???????繪制圖像時顯示的顏色
BackImageWrapMode???????????????包裝模式
BackSecondaryColor?????????????ChartArea的第二背景顏色,搭配漸變用的
BorderColor????????????????????邊框顏色
BorderDashStyle?????????????????邊框線的樣式
BorderWidth????????????????????邊框?qū)挾?/p>
ShadowColor????????????????????整個圖標(biāo)的背影顏色
ShadowOffset???????????????????背影偏移量
注意:
第一,InnerPlotPosition和Position一個是大的,一個是內(nèi)部繪制的,試一下就明白了,這里最重要的是多個ChartArea重疊在一起的時候,兩個Position一定要設(shè)置相同,否則就重疊不上了。
第二,多個ChartArea重疊在一起的時候,顏色或圖片只能在疊在最底下的ChartArea來設(shè)置,上面的ChartArea都設(shè)置為透明即可,最底下的ChartArea是ChartAreas[0],所以不要設(shè)置錯。
4. 游標(biāo):CursorX和CursorY,就是橫向和縱向滾動條
CursorX.AutoScroll?????????????????滾動條自動滾動
CursorX.AxisType????????????????????游標(biāo)作用在主軸還是副軸
CursorX.Interval????????????????????游標(biāo)偏移的間隔
CursorX.IntervalOffset??????????????游標(biāo)間隔偏移量
CursorX.IntervalOffsetType??????????游標(biāo)間隔的單位,建議Auto
CursorX.Type????????????????????????游標(biāo)間隔偏移量的單位,建議Auto
CursorX.IsUserEnabled???????????????啟用游標(biāo)
CursorX.IsUserSelectedEnabled???????啟用游標(biāo)選擇區(qū)域
CursorX.LineColor??????????????????游標(biāo)線顏色
CursorX.LineDashStyle???????????????游標(biāo)線樣式
CursorX.LineWidth???????????????????游標(biāo)線的寬度
CursorX.SelectionColor??????????????游標(biāo)選擇區(qū)域的顏色
CursorY相同,其他屬性自己試
首先強調(diào)一下,只要想選擇區(qū)域細(xì)看曲線圖,就一定要啟用游標(biāo),游標(biāo)的設(shè)置只能在疊加在最上面的ChartArea進行設(shè)置,也就是ChartArea[ChartArea.Count-1],。列了這么多屬性看一下圖更直觀:
X軸和Y軸上有游標(biāo),可以拖動,可以注意看有個按鈕上面有個圓圈,就是向后退,圖中的藍(lán)色矩形方塊就是用戶選擇的區(qū)域,松開鼠標(biāo)就會變成該區(qū)域的圖形。
5. 雜項:Name,沒啥好說的
6. 軸Axes!!:非常重要,一個ChartArea有4個軸:主軸X axis、主軸Y(Value)axis、副軸X axis、副軸Y(Value)axis,每個軸屬性均相同,只說一個一個軸
IsLabelAutoFit?????????????????軸上的標(biāo)簽自動調(diào)整
LabelAutoFitMaxFontSize?????????軸上標(biāo)簽自適應(yīng)字體大號
LabelAutoFitMaxFontSize?????????軸上標(biāo)簽自適應(yīng)字體小號
LabelStyle.Angle????????????????標(biāo)簽顯示角度
LabelStyle.IsEndLabelVisible????最后一個標(biāo)簽是否顯示
其他屬性自己試
我的Interval這里設(shè)置都是NotSet,沒有設(shè)置Auto,為什么,自己試就明白了。
TextOrientation?????????????軸的標(biāo)題方向
Title??????????????????????軸的名字,X軸是時間軸,Title就是時間
其他屬性自己試,簡單
IntervalAutoMode?????????????間隔是固定值還是隨著軸變化,自己試
ScaleView??????????????????????數(shù)據(jù)視圖,就是當(dāng)前繪制展開的圖!重要!
MinSizeType????????????????????游標(biāo)滾動類型
ScrollBar??????????????????????滾動條
ScaleView是數(shù)據(jù)視圖,也就是當(dāng)前繪制出圖表的一個區(qū)域,如果用鼠標(biāo)選擇某個區(qū)域展開顯示,新展開的就又是一個ScaleView,只把它想成當(dāng)前顯示的視圖就好理解了。
ScrollBar就是游標(biāo),之前我們說的ChartArea.CursorX或Y是也是游標(biāo),這里的ScrollBar是滾動條,仔細(xì)看兩者的屬性不難發(fā)現(xiàn),一個是選擇區(qū)域,一個是拖拽滾動條查看所有數(shù)據(jù)。
這些屬性都不是重點,自己試試吧,就是外觀設(shè)計
不多說了,需要網(wǎng)格的在這里設(shè)置就行,感覺設(shè)置完了很丑,不過各花入個眼,如下圖,還不錯哈
簡單不說
別忘了,咱們還停留在ChartArea.Axis里呢,這僅是一個軸,有需要的別忘了設(shè)置其他的軸哦
總結(jié)
以上是生活随笔為你收集整理的c# chart 各个属性_C# Chart控件,chart、Series、ChartArea曲线图绘制的重要属性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 方正飞鸿FIX ES2007荣获大连软交
- 下一篇: c# char unsigned_dll