可以對C# chart控件屬性熟悉起幫助的code, 如今分享給你們,Chart Operate Demo Code Download,若有幫助,別忘點個贊.html
有關MS_Chart的Control範圍、ChartArea範圍、InnerPlotArea範圍,及Lengend、刻度與標籤的位置關係以下圖所示。以便讓你們有個清晰的認識。sql
Chart
ChartBorder 圖表區域的邊框設置
ChartFill 圖表區域的背景填充
Legend 圖表的註釋標籤顯示設置項目,一組數據對應一種顏色的註釋
IsHStack 當有多個顯示項的時候設置Y軸數據是疊加的仍是分開的
Xaxis 圖表區域的X軸相關信息設置
AxisColor 座標軸顏色
Cross 座標的原點,能夠設置座標的偏移程度
CrossAuto 原點自動設置:True的話Cross的設置就無效了。
FontSpec X軸標題字體相關信息
Angle X軸標題字體顯示時候的角度,0爲水平 90爲垂直
Fill X軸標題字體填充信息
ColorOpacity 透明度
IsScaled 設置X軸標題字體顯示大小是否根據圖的比例放大縮小
RangeMax 填充時候的最大傾斜度(有過渡色,沒試過)
RangeMin 填充時候的最小傾斜度(有過渡色,沒試過)
StringAlignment X軸標題字體排列(不清楚,沒試過)
IsOmitMag 是否顯示指數冪(10次方,沒試過,彷佛與IsUseTenPower有關係)
IsPreventLabelOverlap 座標值顯示是否容許重疊,若是False的話,控件會根據座標值長度自動消除部分座標值的顯示狀態
IsShowTitle X軸標題是否顯示
IsTicsBetweenLabels 兩個座標值之間是否自動顯示分隔標誌
IsUseTenPower 是否使用10次冪指數
IsVisible 是否顯示X軸
IsZeroLine 當數據爲0時候是否顯示(在餅狀圖顯示的時候有用)
MajorGrid 大跨度的X軸表格虛線線顯示信息
DashOff 虛線中孔間距
DashOn 虛線單位長度
MajorTic 大跨度的X軸刻度信息
IsInside 在Chart內部是否顯示
IsOutSide 在Chart外部是否顯示
IsOpposite 在對面的軸上是否顯示
MinorGrid 小跨度的X軸表格虛線顯示信息
MinorTic 小跨度的x軸刻度信息
MinSpace 刻度和軸之間的距離(沒試過)
Scale 刻度值的一些設定
IsReverse X軸的刻度值從高到低仍是從低到高
MajorStep 大刻度步長
MajorStepAuto 是否自動設置大刻度步長
MajorUnit 大刻度步長單位
Max 刻度最大值
MaxAuto 根據輸入數據自動設置刻度最大值
Min 刻度最小值
MinAuto 根據輸入數據自動設置刻度最小值
MinGrace 不清楚,沒試過
MinorStep 小刻度步長
MinorStepAuto 是否自動設置小刻度步長
MinorUnit 小刻度單位
Type 數據顯示方式
Liner直接現實(自動)
Date按日期方式顯示
Log 按指數冪方式顯示
Ordinal順序顯示
Y2Axis 第二個Y軸座標信息顯示(具體設置看X軸)
Yaxis 第一個Y軸座標信息顯示(具體設置看X軸)
GraphPane
BarBase 在生成柱狀圖的時候設置柱狀是基於X軸仍是其餘軸
BarType 柱狀的類型疊加或其餘。
IsFontsScaled 圖比例變化時候圖表上的文字是否跟着自動縮放
IsIgnoreInitial 是否忽略初始值
IsIgnoreMissing 是否忽略缺省值
IsPenWidthScaled 圖比例變化時候圖表上的畫筆的粗細是否跟着自動縮放
IsShowTitle 圖表標題是否顯示
PaneFill Pane的一些填充信息
MasterPane
BaseDimension 縮放比例基數(能夠試試效果)
數據 未測試過。不知道如何和數據庫綁定
外觀
IsImageMap 不清楚幹嘛用的
行爲
AxisChaneged 是否容許自動繪圖(沒試過,通常都true,動態繪圖)
CacheDuration Cache保存時間0
OutputFormat 輸出格式
RenderedImagePath 輸出路徑
RenderMode 輸出模式,不太清楚通常都是ImageTag,另外一個輸出的是亂碼不是圖片
對於圖表而言,通常是三種表現形式:柱狀圖、餅狀圖和點線圖。
ChartBorder
圖表區域的邊框設置
ChartFill
圖表區域的背景填充
Legend
圖表的註釋標籤顯示設置項目,一組數據對應一種顏色的註釋
IsHStack
當有多個顯示項的時候設置 Y 軸數據是疊加的仍是分開的
Xaxis
圖表區域的 X 軸相關信息設置
AxisColor
座標軸顏色
Cross
座標的原點,能夠設置座標的偏移程度
CrossAuto
原點自動設置:True 的話 Cross 的設置就無效了。
FontSpec
X 軸標題字體相關信息
Angle
X 軸標題字體顯示時候的角度,0爲水平 90爲垂直
Fill
X 軸標題字體填充信息
ColorOpacity
透明度
IsScaled
設置 X 軸標題字體顯示大小是否根據圖的比例放大縮小
RangeMax
填充時候的最大傾斜度(有過渡色,沒試過)
RangeMin
填充時候的最小傾斜度(有過渡色,沒試過)
StringAlignment
X 軸標題字體排列(不清楚,沒試過)
IsOmitMag
是否顯示指數冪(10次方,沒試過,彷佛與 IsUseTenPower 有關係)
IsPreventLabelOverlap
座標值顯示是否容許重疊,若是False的話,控件會根據座標值長度自動消除部分座標值的顯示狀態
IsShowTitle
X 軸標題是否顯示
IsTicsBetweenLabels
兩個座標值之間是否自動顯示分隔標誌
IsUseTenPower
是否使用10次冪指數
IsZeroLine
當數據爲0時候是否顯示(在餅狀圖顯示的時候有用)
IsVisible
是否顯示 X 軸
MajorGrid
大跨度的 X 軸表格虛線線顯示信息
DashOff
虛線中孔間距
DashOn
虛線單位長度
MajorTic
大跨度的 X 軸刻度信息
IsInside
在 Chart 內部是否顯示
IsOutSide
在 Chart 外部是否顯示
IsOpposite
在對面的軸上是否顯示
MinorGrid
小跨度的 X 軸表格虛線顯示信息
MinorTic
小跨度的 x 軸刻度信息
MinSpace
刻度和軸之間的距離(沒試過)
Scale
刻度值的一些設定
IsReverse
X 軸的刻度值從高到低仍是從低到高
MajorStep
大刻度步長
MajorStepAuto
是否自動設置大刻度步長
MajorUnit
大刻度步長單位
Max
刻度最大值
MaxAuto
根據輸入數據自動設置刻度最大值
Min
刻度最小值
MinAuto
根據輸入數據自動設置刻度最小值
MinGrace
不清楚,沒試過
MinorStep
小刻度步長
MinorStepAuto
是否自動設置小刻度步長
MinorUnit
小刻度單位
Type
數據顯示方式
Liner
直接現實(自動)
Date
按日期方式顯示
Log
按指數冪方式顯示
Ordinal
順序顯示
Y2Axis
第二個 Y 軸座標信息顯示(具體設置看 X 軸)
Yaxis
第一個 Y 軸座標信息顯示(具體設置看 X 軸)
BarBase
在生成柱狀圖的時候設置柱狀是基於 X 軸仍是其餘軸
BarType
柱狀的類型疊加或其餘。
IsFontsScaled
圖比例變化時候圖表上的文字是否跟着自動縮放
IsIgnoreInitial
是否忽略初始值
IsIgnoreMissing
是否忽略缺省值
IsPenWidthScaled
圖比例變化時候圖表上的畫筆的粗細是否跟着自動縮放
IsShowTitle
圖表標題是否顯示
PaneFill
Pane 的一些填充信息
BaseDimension
縮放比例基數(能夠試試效果)
IsImageMap
不清楚幹嘛用的
AxisChaneged
是否容許自動繪圖(沒試過,通常都 true,動態繪圖)
CacheDuration
Cache 保存時間0
OutputFormat
輸出格式
RenderedImagePath
輸出路徑
RenderMode
輸出模式,不太清楚通常都是 ImageTag,另外一個輸出的是亂碼不是圖片。對於圖表而言,通常是三種表現形式:柱狀圖、餅狀圖和點線圖。數據庫
下面這部分參考自: 救急!!!Dev的chartControl畫曲線圖,怎麼控制X軸的標籤間隔顯示? huangama2011c#
X軸是時間,Y軸是金額;
如今記錄有100多個,標籤在X軸都顯示出來了,數字密密麻麻;
麻煩問下,怎麼控制X軸的標籤間隔顯示?數組
要設置下 series1.ArgumentScaleType = ScaleType.DateTime;//x軸類型 這個 Series series1 = new Series(this.Text, ViewType.Spline); series1.ArgumentScaleType = ScaleType.DateTime;//x軸類型 series1.ValueScaleType = ScaleType.Numerical;//y軸類型 //X軸的數據字段 series1.ArgumentDataMember = "StatisticsTime"; //Y軸的數據字段 series1.ValueDataMembers[0] = "StatisticsSum"; //定義線條上點的標識形狀是否須要 ((LineSeriesView)series1.View).LineMarkerOptions.Visible = false; //定義線條上點的標識形狀 ((LineSeriesView)series1.View).LineMarkerOptions.Kind = MarkerKind.Circle; //不顯示X、Y軸上面的交點的值 ((PointSeriesLabel)series1.Label).Visible = false; //線條的類型,虛線,實線 ((LineSeriesView)series1.View).LineStyle.DashStyle = DashStyle.Solid;
完整代碼: ide
public void BindChart(DataTable datatable, ChartControl myChartControl) { myChartControl.Name = "chartResult"; myChartControl.Dock = DockStyle.Fill; myChartControl.Size = new System.Drawing.Size(400, 250); // 顯示標籤. myChartControl.Legend.Visible = true; myChartControl.Series.Clear(); #region 僅供參考(不須要) //控制X、Y軸顯示 //XYDiagram diagram = (XYDiagram)chartControl.Diagram; //diagram.AxisX.Label.Staggered = true; //diagram.AxisY.Label.BeginText = "Axis value = "; //diagram.AxisY.Label.Angle = -30; //diagram.AxisY.Label.Antialiasing = true; //XYDiagram diagram = (XYDiagram)chartControl.Diagram; //diagram.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Second; //diagram.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; diagram.AxisX.DateTimeOptions.FormatString = "HH:mm:ss"; //((XYDiagram)myChartControl.Diagram).AxisX.Interlaced = true; //((XYDiagram)myChartControl.Diagram).AxisX.GridSpacing = 10; //((XYDiagram)myChartControl.Diagram).AxisX.Label.Angle = -30; //((XYDiagram)myChartControl.Diagram).AxisX.Label.Antialiasing = true; //((XYDiagram)myChartControl.Diagram).AxisX.DateTimeOptions.Format = DateTimeFormat.MonthAndDay; ////XYDiagram xyDiagram1 = new XYDiagram(); ////xyDiagram1.AxisX.Range.Auto = false; //要開啓滾動條必須將其設置爲false //////xyDiagram1.AxisX.Range.MaxValueInternal = 30.5D > (cnt + 1) ? (cnt + 1) : 30.5D;//在不拉到滾動條的時候,X軸顯示多個值,既固定的X軸長度。 //////xyDiagram1.AxisX.Range.MinValueInternal = -0.5D; ////xyDiagram1.AxisX.Range.ScrollingRange.Auto = false; ////xyDiagram1.AxisX.MinorCount = 9; //顯示X軸間隔數量 ////xyDiagram1.AxisX.Tickmarks.MinorVisible = true;//是否顯示X軸間隔 //xyDiagram1.AxisY.MinorCount = 1;//顯示Y軸間隔數量 //xyDiagram1.AxisY.Tickmarks.MinorVisible = true;//是否顯示Y軸間隔 //xyDiagram1.AxisX.Range.ScrollingRange.MaxValueSerializable = (cnt + 1).ToString();//整個X軸最多顯示多多少個值 // xyDiagram1.AxisX.Range.ScrollingRange.MinValueSerializable = "0"; //xyDiagram1.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Second; //xyDiagram1.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; //xyDiagram1.AxisX.DateTimeOptions.FormatString = "yyyy:MM:HH"; //xyDiagram1.AxisX.Range.ScrollingRange.SideMarginsEnabled = true;//是否從X軸原點開始顯示 //xyDiagram1.AxisX.Range.SideMarginsEnabled = false; ////xyDiagram1.AxisX.VisibleInPanesSerializable = "-1"; ////xyDiagram1.AxisY.NumericOptions.Format = DevExpress.XtraCharts.NumericFormat.Percent;//顯示爲百分數 //xyDiagram1.AxisY.Range.Auto = false; ////xyDiagram1.AxisY.Range.MaxValueSerializable = "1.02"; ////xyDiagram1.AxisY.Range.MinValueSerializable = "0.5"; //xyDiagram1.AxisY.Range.ScrollingRange.SideMarginsEnabled = true; //xyDiagram1.AxisY.Range.SideMarginsEnabled = true; ////xyDiagram1.AxisY.VisibleInPanesSerializable = "-1"; //xyDiagram1.EnableScrolling = true;//啓用滾動條 //獲取Diagram必須在ChartControl中已經加入了Series以後 //((XYDiagram)chartControl.Diagram).Rotated = false; #endregion //圖標位置 myChartControl.Legend.AlignmentHorizontal = LegendAlignmentHorizontal.Right; myChartControl.Legend.AlignmentVertical = LegendAlignmentVertical.Top; ChartTitle chartTitle = new ChartTitle(); chartTitle.Text = this.Text;//標題內容 chartTitle.TextColor = System.Drawing.Color.Black;//字體顏色 chartTitle.Font = new Font("Tahoma", 8);//字體類型字號 chartTitle.Dock = ChartTitleDockStyle.Bottom;//標題對齊方式 chartTitle.Alignment = StringAlignment.Far; myChartControl.Titles.Clear();//清理標題 myChartControl.Titles.Add(chartTitle);//加載標題 Series series1 = new Series(this.Text, ViewType.Spline); series1.ArgumentScaleType = ScaleType.DateTime;//x軸類型 series1.ValueScaleType = ScaleType.Numerical;//y軸類型 //X軸的數據字段 series1.ArgumentDataMember = "StatisticsTime"; //Y軸的數據字段 series1.ValueDataMembers[0] = "StatisticsSum"; //定義線條上點的標識形狀是否須要 ((LineSeriesView)series1.View).LineMarkerOptions.Visible = false; //定義線條上點的標識形狀 ((LineSeriesView)series1.View).LineMarkerOptions.Kind = MarkerKind.Circle; //不顯示X、Y軸上面的交點的值 ((PointSeriesLabel)series1.Label).Visible = false; //線條的類型,虛線,實線 ((LineSeriesView)series1.View).LineStyle.DashStyle = DashStyle.Solid; //綁定數據源 series1.DataSource = datatable; myChartControl.Series.Add(series1); }
關於X軸數據間距過大的問題,能夠經過設置scale來解決。在Format Chart頁,選中Chart Area->Axes->X-Axis, 設置間隔。
關於點重合的問題,你能夠經過改變marker的形狀和大小來解決。在Format Chart頁,選中Series->Value series,找到marker就能夠進行設置了。
X軸和Y軸的最大值設置 也是在Chart Area->Axes->X-Axis的刻度中設置。post
List<Series> listSer = new List<Series>();
引起動態生成圖表的按鈕事件完整以下:測試
string sqlString = "select count(*) from dotrelation where dotdesc like '溫度%'"; num = Mycon.countORL(conn, sqlString);//得到數據庫中知足條件的記錄數 //MessageBox.Show("知足條件的數據記錄爲" + num); int heightPer = 100 / num;//計算每一個繪圖區高度 for (int i = 0; i < num; i++) { string serName = "test" + i.ToString(); listSer.Add(new Series(serName));//對象數組 fillData(date);//初始化數組此方法本身定義的 initialSeries((Series)listSer[i], Color.Red, date); chart1.ChartAreas.Add("ANOTHER" + i); //這裏是關鍵!!!!! chart1.ChartAreas[i].Position.Width = 100;//繪圖區域在控件中的寬度 100是百分比 chart1.ChartAreas[i].Position.Height = heightPer; chart1.ChartAreas[i].Position.X = 5;//繪圖區域在控件中的絕對位置 橫座標 chart1.ChartAreas[i].Position.Y = 3 + heightPer * i;//繪圖區域在控件中的絕對位置縱座標 chart1.ChartAreas[i].AxisX.LineColor = Color.Blue; chart1.ChartAreas[i].AxisY.LineColor = Color.Blue; chart1.ChartAreas[i].AxisX.LineWidth = 2; chart1.ChartAreas[i].AxisY.LineWidth = 2; chart1.ChartAreas[i].AxisY.Title = "監測值"; //設置網格線 chart1.ChartAreas[i].AxisX.MajorGrid.LineColor = Color.Blue; chart1.ChartAreas[i].AxisX.MajorGrid.Interval = 2;//網格間隔 chart1.ChartAreas[i].AxisX.MinorGrid.Interval = 2; chart1.ChartAreas[i].AxisY.MajorGrid.LineColor = Color.Blue; chart1.ChartAreas[i].AxisY.MajorGrid.Interval = 2; chart1.ChartAreas[i].AxisY.MinorGrid.Interval = 2; chart1.Series[i].IsValueShownAsLabel = false; //是否顯示數據 chart1.Series[i].IsVisibleInLegend = false; //是否顯示數聽說明 chart1.Series[i].MarkerStyle = MarkerStyle.Circle; //線條上的數據點標誌類型 chart1.Series[i].MarkerSize = 3; //標誌大小 chart1.Series[i].ChartType = SeriesChartType.Line; //圖表類型爲曲線 string name = "ANOTHER" + i.ToString(); chart1.Series[i].ChartArea = name;//指定繪圖區域 chart1.ChartAreas[i].AxisX.LineColor = Color.Blue;//X軸顏色 chart1.ChartAreas[i].AxisY.LineColor = Color.Blue;//Y軸顏色 chart1.ChartAreas[i].AxisX.LineWidth = 2; //X軸寬度 chart1.ChartAreas[i].AxisY.LineWidth = 2; //Y軸寬度 chart1.ChartAreas[i].AxisY.Title = "人數"; //Y軸標題 } //fillData(date);//初始化數組 //initialSeries(series1, Color.Red, date); initalChart();//圖表初始化 }
參考文章字體
1. louiskoo , c# Chart設置樣式。ui
2. IT-CollectionPlatForm, C# 2010 Chart的使用。