DEV控件之ChartControl用法


一、總體概述

這個控件包含3層,最外面的chartControl層、中間的XYDiagram層、最里面的Series層。功能非常強大,但同時使用起來也相對復雜,需要各個層之間相互協調設置才能達到自己想要的效果。

二、chartControl層

像DEV的其它控件一樣,這一層之相當於是一個殼子,我們平時在這里面設置的屬性也不多。而且都是些常規屬性,比如大小、停靠方式等等。

三、XYDiagram層

這一層就比較關鍵了,主要是涉及到XY軸的顯示方式和滾動條顯示等。並且坐標軸的顯示方式和數據類型也有很大的關系,主要包括3種類型,數據類型是根據添加到Series中的數據類型決定的,主要屬性是ArgumentScaleType。所以涉及到3種不同的設置方式。

  1. 當坐標軸的數據類型是數字時

  2. 當前數據類型是字符串時

其它設置同上,主要是要想出現滾動條,在設計面板中還不能實現,必須通過代碼設置

DevExpress.XtraCharts.XYDiagram xyDiagram1 = (XYDiagram)this.chartControl1.Diagram;          

xyDiagram1.AxisX.Range.MaxValueInternal = 3; //這個屬性在設計視圖里面是看不到的,只有代碼里面才可以設置。

xyDiagram1.AxisX.Range.MinValueInternal = -0.5D;

  3.當前數據類型是時間

AxisX ax = (XYDiagram)chartControl1.Diagram;
ax.GridSpacingAuto = false;
ax.DateTimeMeasureUnit = DateTimeMeasurementUnit.Minute;//這個可以根據你自己的情況設置
ax.DateTimeGridAlignment = DateTimeMeasurementUnit.Second; //這個是間隔單位
ax.GridSpacing = 10; // 每10秒為一個間隔。

三、series層

根據選擇的類型圖不一樣,設置也不盡相同。

  1.棒狀圖

其實說起棒狀圖,很多人都在乎如何固定棒狀圖的寬度,其實它這里是不可以固定具體的像素寬度,只能根據左邊軸當前的顯示范圍來確定顯示的比例,比如當前顯示的范圍是3,寬度比例是0.6,那么顯示的就比較適中,如果是1,則顯示的比較寬一點,而且間隔也變小了。主要寬度屬性為:

BarSeriesView sv1 = (BarSeriesView)S1.View;

            sv1.BarWidth = 1;

四、相關代碼實現

#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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM