Dev ChartControl

1、ChartControl

绘制曲线图,横坐标表示距离起点距离,纵坐标表示高程,均为double类型值,定义一个数据源的类。

 /// <summary>
    /// 画图控件数据源
    /// </summary>
    public class ChartDatasource
    {
        /// <summary>
        /// 当前位置高度
        /// </summary>
        public double Altitude { get; set; }

        /// <summary>
        /// 距起点距离
        /// </summary>
        public double Length { get; set; }

        /// <summary>
        /// 坡度
        /// </summary>
        public double Slope { get; set; }

    }

绑定字段

            this.chartControl_Alt.Series[0].ArgumentDataMember = "Length";
            this.chartControl_Alt.Series[0].ValueDataMembers[0] = "Altitude";

            this.chartControl_Slope.Series[0].ArgumentDataMember = "Length";
            this.chartControl_Slope.Series[0].ValueDataMembers[0] = "Slope";

构造一<List>,存储坐标点对,赋值即可,作为数据源。

              var sourcelist=new List<ChartDatasource>();
            sourcelist.Add(new ChartDatasource{Altitude=33,Length=0,Slope=4});
            sourcelist.Add(new ChartDatasource{Altitude=33,Length=0,Slope=4});
            sourcelist.Add(new ChartDatasource{Altitude=33,Length=0,Slope=4});
            sourcelist.Add(new ChartDatasource{Altitude=33,Length=0,Slope=4});
            .....................
            chartControl_Alt.DataSource = sourcelist;
            chartControl_Slope.DataSource = sourcelist;

显示效果如下图所示,一个数据类,存有三个字段,但绑定的字段不同,显示不同的结果,作为多个图表的数据源。

2、一个图上多条曲线

数据源类

/// <summary>
    /// 画图控件数据源
    /// </summary>
    public class RChartDataSource
    {
        /// <summary>
        /// 点号
        /// </summary>
        public string ID
        { get; set; }

        /// <summary>
        /// 源高程值
        /// </summary>
        public double HeightY
        { get; set; }

        /// <summary>
        /// 对比高程值
        /// </summary>
        public double HeightD
        {
            get;
            set;
        }
    }

之前横坐标为double类型,则控件自动按值大小显示在图表上,这里也可以用string类型为横坐标,设为ID,依此保存为1,2,3,4....

字段绑定

            this.chartControl1.Series[0].ValueDataMembers[0] = "HeightY";
            this.chartControl1.Series[0].ArgumentDataMember = "ID";

            this.chartControl1.Series[1].ValueDataMembers[0] = "HeightD";
            this.chartControl1.Series[1].ArgumentDataMember = "ID";

这里,横坐标均绑定为一个字段ID,纵坐标为各自的值。

            var sourcelist=new List<RChartDataSource>();
            sourcelist.Add(new RChartDataSource{ID=1,HeightY=35,HeightD=36});
            sourcelist.Add(new RChartDataSource{ID=2,HeightY=35,HeightD=36});
            sourcelist.Add(new RChartDataSource{ID=3,HeightY=35,HeightD=36});
            sourcelist.Add(new RChartDataSource{ID=4,HeightY=35,HeightD=36});
            sourcelist.Add(new RChartDataSource{ID=5,HeightY=35,HeightD=36});
            .....................
            chartControl1.DataSource = sourcelist;

显示结果如下所示:

若数据源列表发生变化,则可以重新赋值

sourcelist.Add(new (new RChartDataSource{ID=,HeightY=,HeightD=});
chartcontrol.DataSource=null;
chartcontrol.DataSource=sourcelist;

3、其他

a、我们在图表上移动或点击时,需要获得当前鼠标位置所对应的横纵坐标值,可以通过以下方式获得

为ChartControl添加CustomDrawCrosshair事件,事件代码如下

        double Heng = 0;
        double Zong = 0;
        private void chartControl_Alt_CustomDrawCrosshair(object sender, CustomDrawCrosshairEventArgs e)
        {
            if (chartControl_Alt.DataSource != null&&IsClick)
            {
                var element = e.CrosshairElements;
                if (element.Count() > 0)
                Heng = element.ElementAt(0).SeriesPoint.NumericalArgument;
                Zong = element.ElementAt(0).SeriesPoint.Values[0];
            }
        }

CrosshairElements还有很多其他属性,可进一步研究,可打断点查看相应属性。这里提供一种并不完善的方式,需要进一步完善。

b、设置ConstanLine线位置

 var axis = chartControl_Alt.Diagram as DevExpress.XtraCharts.XYDiagram;
 axis.AxisX.ConstantLines[0].AxisValue = Heng;
 axis.AxisX.ConstantLines[0.Visible = true
 axis.AxisX.ConstantLines[1].AxisValue = 160;
 axis.AxisX.ConstantLines[1.Visible = true;

 //这里的两条线都是垂直于x轴的线,先可以通过代码添加,也可以提前在Run Designer里面添加好初始设置为不可见。

Run Designer里面有很多属性可进行设置,对控件显示效果和显示功能进行设置。

原文地址:https://www.cnblogs.com/zwcoding/p/9269865.html

时间: 2024-10-18 22:26:30

Dev ChartControl的相关文章

dev ChartControl 备忘

一个chartControl 里包括以个diagram(图表) diagram里可以设置 x-axis与y-axis ,另外还可以设置SecondaryXAxis与SecondaryYAxis,在Series属性里可以选择使用Secondary Axis 一个diagram里包括多少个Series,一个Series表示一组(x,y)取值集合 一个diagram里可以添加多个Panel, 二Series可以设置呈现在那个panel里 Series的主要属性是DataSource,指定 Argume

Dev ChartControl鼠标移动显示坐标点

his.chartIRC_RATES.MouseMove += new MouseEventHandler(chartIRC_RATES_MouseMove); ToolTipController toolTipController = new ToolTipController();         /// <summary>        /// 鼠标显示节点坐标        /// </summary>        /// <param name="sen

WPF DevExpress ChartControl使用之XYDiagram

WPF使用Dev和WinForm有许多不同,相对而言,WPF要更简单和炫酷一点,我只做了一点基本的功能,没有仔细的研究,这里只介绍一下WPF Dev ChartControl绘制XYDiagram的基础. XYDiagramControl.xaml页面 <UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microso

DEV控件之ChartControl用法 z

一.总体概述 这个控件包含3层,最外面的chartControl层.中间的XYDiagram层.最里面的Series层.功能非常强大,但同时使用起来也相对复杂,需要各个层之间相互协调设置才能达到自己想要的效果. 二.chartControl层 像DEV的其它控件一样,这一层之相当于是一个壳子,我们平时在这里面设置的属性也不多.而且都是些常规属性,比如大小.停靠方式等等. 三.XYDiagram层 这一层就比较关键了,主要是涉及到XY轴的显示方式和滚动条显示等.并且坐标轴的显示方式和数据类型也有很

DEV控件之ChartControl 属性设置【转】

一.总体概述 这个控件包含3层,最外面的chartControl层.中间的XYDiagram层.最里面的Series层.功能非常强大,但同时使用起来也相对复杂,需要各个层之间相互协调设置才能达到自己想要的效果. 二.chartControl层 像DEV的其它控件一样,这一层之相当于是一个壳子,我们平时在这里面设置的属性也不多.而且都是些常规属性,比如大小.停靠方式等等. 三.XYDiagram层 这一层就比较关键了,主要是涉及到XY轴的显示方式和滚动条显示等.并且坐标轴的显示方式和数据类型也有很

WPF DEV控件-ChartControl用法

<dxc:ChartControl AnimationMode="OnDataChanged" Background="Transparent" BorderThickness="0" BorderBrush="Transparent" > <dxc:XYDiagram2D PaneOrientation="Vertical" EqualBarWidth="True"&

Dev之ChartControl控件(二)— 绘制多重坐标图形

有时针对一个ChartControl控件可能要设置多个Y轴,进行显示: 以下举个例子:如在一个Chart中显示多个指标项如图: 首先,读取数据,并对左边的Y轴最大和最小值进行设定 IndexSeriesControler indexControl = new IndexSeriesControler(); IEnumerable<IndexModel> ieModel= indexControl.GetDate(dateB,dateE,indexName);//读取的数据集 decimal m

Dev之ChartControl控件

ChartControl控件主要包括Chart Title,Legend,Annotations,Diagram,Series五部分:如图: 1.  用RangeControl控件控制ChartControl的显示范围,当用RangeControl时,把RangeControl.Clent属性设为用例,如”chartControl1”, RangeControl会自动绑定到ChartControl 2.  RangeControlOptions控制RangeControl中的Series显示类型

dev控件 chartControl控件

1.chartControl1设置图例上的数量 // Series1.ShowInLegend = false; // '设置是否显示说明  Series1.Label.Visible = true; // '设置是否显示引线文字 第一个属性根据其代码设置有时可要可不要 第二个必须要 2.chartControl1 数据过多时加滚轮 XYDiagram xyd = (XYDiagram)chartControl1.Diagram; xyd.EnableAxisXScrolling = true;