c# chart 各个属性_c# Chart设置样式
一、chart屬性熟悉
能夠對C# chart控件屬性熟悉起幫助的code, 現在分享給大家,Chart Operate Demo Code Download,如有幫助,別忘點個贊.
有關MS_Chart的Control范圍、ChartArea范圍、InnerPlotArea范圍,及Lengend、刻度與標簽的位置關系如下圖所示。以便讓大家有個清晰的認識。
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,另一個輸出的是亂碼不是圖片。對于圖表而言,一般是三種表現形式:柱狀圖、餅狀圖和點線圖。
二、問題
2.1 控制X軸的標簽間隔顯示
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;
完整代碼:
public void BindChart(DataTable datatable, ChartControl myChartControl)
{
myChartControl.Name = "chartResult";
myChartControl.Dock = DockStyle.Fill;
myChartControl.Size = new System.Drawing.Size(, );
// 顯示標簽.
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", );//字體類型字號
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[] = "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);
}
2.2 x軸的間距過大的問題
關于X軸數據間距過大的問題,可以通過設置scale來解決。在Format Chart頁,選中Chart Area->Axes->X-Axis,? 設置間隔。
關于點重合的問題,你可以通過改變marker的形狀和大小來解決。在Format Chart頁,選中Series->Value series,找到marker就可以進行設置了。
X軸和Y軸的最大值設置 也是在Chart Area->Axes->X-Axis的刻度中設置。
List listSer = new List();
引發動態生成圖表的按鈕事件完整如下:
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();//圖表初始化
}
參考文章
2. IT-CollectionPlatForm, C#?2010?Chart的使用。
word-wrap&;&;word-break,奇偶行、列設置樣式
1.word-wrap和word-break區分. 來源場景:機械租賃mvc駕駛員信息查看: 當備注的文字多的時候,第一列的值成這模樣: 解決方案:設置table 的td可自動換行.首先table設置 ...
注意Android里TextView控件的一個小坑,用android:theme來設置樣式時動態載入的layout會丟失該樣式
注意Android里TextView控件的一個小坑,用android:theme來設置樣式時動態載入的layout會丟失該樣式 這個坑,必須要注意呀, 比如在用ListView的時候,如果在List_ ...
Vue系列: 如何通過組件的屬性props設置樣式
比如我們要在vue中顯示百度地圖,然后將相關的代碼包裝成組件,然后需要由外部來設置組件的高度,關于props的介紹,可以參考: http://cn.vuejs.org/guide/components ...
【使用 DOM】為DOM元素設置樣式
1. 使用樣式表 可以通過document.styleSheets屬性訪問文檔中可用的CSS樣式表,它會返回一組對象集合,這些對象代表了與文檔管理的各個樣式表. 每個樣式表 都由一個CSSStyleS ...
【溫故而知新-Javascript】為DOM元素設置樣式
1. 使用樣式表 可以通過document.styleSheets屬性訪問文檔中可用的CSS樣式表,它會返回一組對象集合,這些對象代表了與文檔管理的各個樣式表. 每個樣式表 都由一個CSSStyleS ...
通過JavaScript設置樣式和jQuey設置樣式,還有隨機數拋出水果的習題
一:通過JavaScript的方式設置樣式(:拿習題為例): var shuiguo = document.getElementById('fruit');???? shuiguo.style.bac ...
Windows Phone 為指定容器內的元素設置樣式
在Windows Phone中設置元素樣式有多種 拿TextBlock來說 1.我們可以直接在控件上設置:
如何給DropDownList控件設置樣式(ASP.NET MVC)
前話: 應學校領導要求,要給后臺管理系統添加一個搜索功能,提供可選擇選項.我選擇使用DropDownList去實現,熟悉.net控件的都知道,DropDownList的樣子非常丑,不論是邊框長寬還是里 ...
為應用程序的選項卡及ActionBar設置樣式
示例文件??flex-mobile-dev-tips-tricks-pt2.zip 關于Flex移動開發的提示和技巧有一系列文章,這是其中的第二部分.第一部分集中講解如何在視圖切換及應用程序操作切換之 ...
隨機推薦
Android MVP+Retrofit+RxJava實踐小結
關于MVP.Retrofit.RxJava,之前已經分別做了分享,如果您還沒有閱讀過,可以猛戳: 1.Android MVP 實例 2.Android Retrofit 2.0使用 3.RxJava ...
css 設計總結
一.背景圖片的拉伸:?backgroud-size 說明: ?http://www.w3school.com.cn/cssref/pr_background-size.asp 效果: ?http:// ...
web設計經驗<;七>;13步打造優雅的WEB字體
今天,大多數瀏覽器已經默認支持Web字體,日趨增多的字體特性被嵌入最新版HTML和CSS標準中,Web字體即將迎來一個趨于復雜的嶄新時代.下面是一些基本的關于字體的規則,特別適用于Web字體. 原文地 ...
自適應游標共享技術01(Adaptive Cursor Sharing)
什么是ACS(adaptiver cursor sharing) Oracle通過綁定變量技術解決了SQL語句硬解析過多的問題,降低了資源的爭用.但是綁定變量在引入cursor sharing,增加了 ...
代碼編譯方式 ant +ivy
Apache Ant,是一個將軟件編譯.測試.部署等步驟聯系在一起加以自動化的一個工具,大多用于Java環境中的軟件開發.由Apache軟件基金會所提供. 沒用過ant,了解一下,無非就這些功能, 編 ...
理解線程的掛起,sleep還有阻塞
線程是靠cpu來運行的,cpu要運行一個線程(不說別的)最起碼就是要占用cpu時間,象Windows這樣的多任務操作系統,可以允許多個線程同時運行,所謂的同時運行并不是真正的同時運行,而是輪流運行不同 ...
Objective-c 集合對象
集合(NSSet)是一組單值對象的組合,集合對象的操作包括:搜索,添加,刪除集合中的成員(可變集合的功能),比較兩個集合,計算兩個集合的交集,并集等. 下面來看下(NSSet)的方法: 1)集合的構建 ...
wifipineapple外接SD卡
通過SSH或者web訪問URL,?http://172.16.42.1:1471 輸入帳號:root??密碼:pineapplesareyummy(默認賬號密碼) ssh連接:ssh root@172 ...
javascript設計模式系列二-封裝
JavaScript封裝: var Book = function (id, name, price) { this.id = id, this.name = name, this.price = p ...
總結
以上是生活随笔為你收集整理的c# chart 各个属性_c# Chart设置样式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python重复import_Pytho
- 下一篇: c# chart 各个属性_C#Char