c#tchart的使用

控制显示数据个数

设置为0则是全显示,>0则是显示实际设置个数,若添加了40个数据,但只设置显示10个,则可以鼠标右键拖拽显示之后的数据。
在这里插入图片描述

x轴设置为指定时间格式,且设置最小间隔时间

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

鼠标滚轮控制缩放

添加滚轮事件

 tChart1.MouseWheel += TChart1_MouseWheel;
private void TChart1_MouseWheel(object sender, MouseEventArgs e)
{
    if (tChart1 != null)
    {
        var valueUnit = e.Delta > 0 ? 1 : -1;
        var valueUnit2 = e.Delta > 0 ? 1.5 : 0.5;

            double OldXMin = tChart1.Axes.Bottom.Minimum;
            double OldXMax = tChart1.Axes.Bottom.Maximum;
            double XMid = (OldXMin + OldXMax) / 2;
            double NewXMin = (valueUnit * XMid * 0.5 + OldXMin) / (valueUnit2);
            double NewXMax = (valueUnit * XMid * 0.5 + OldXMax) / (valueUnit2);
            tChart1.Axes.Bottom.SetMinMax(NewXMin, NewXMax);//x轴缩放
            double OldYMin = tChart1.Axes.Left.Minimum;
            double OldYMax = tChart1.Axes.Left.Maximum;
            double YMid = (OldYMin + OldYMax) / 2;
            double NewYMin = (valueUnit * YMid * 0.2 + OldYMin) / (valueUnit2);
            double NewYMax = (valueUnit * YMid * 0.2 + OldYMax) / (valueUnit2);
            tChart1.Axes.Left.SetMinMax(NewYMin, NewYMax);//y轴缩放
    }

}

点击数据点显示曲线信息

添加点击事件

tChart1.ClickSeries += new Steema.TeeChart.TChart.SeriesEventHandler(this.tChart1_ClickSeries);
private void tChart1_ClickSeries(object sender, Steema.TeeChart.Styles.Series s, int valueIndex, MouseEventArgs e)
{
    var mes = "时间:" + DateTime.FromOADate(s.XValues[valueIndex]) + "\r\n值:" + s.YValues[valueIndex] + _chartValueUnit + "\r\n曲线:" + s.Title;
    Form form = FindForm();
    label1.Text = mes;
    toolTip1.Show(mes, form, form.PointToClient(Cursor.Position));
}

调出图片导出保存界面

tChart1.Export.ShowExportDialog();

绑定数据源并生成曲线

Line line = new Line();
line.Pointer.HorizSize = 2;
line.Pointer.Style = PointerStyles.Circle;
line.Pointer.VertSize = 2;
line.Pointer.Visible = true;
line.XValues.DateTime = true;
line.Title = name;
line.DataSource = table;
line.XValues.DataMember = _xAxexTableName;//x轴的数据取值,写table用于x轴的列名
line.YValues.DataMember = _yAxexTableName;//y轴的数据取值,写table用于y轴的列名
tChart1.Series.Add(line);

实现数据点鼠标拖拽

有时候工程需要对曲线进行修改,则可以点击数据点,进行拖拽,属性设置如下:
在这里插入图片描述
在这里插入图片描述
因为该工具激活会导致无法进入ClickSeries事件,而我需要在ClickSeries事件中找到点击的数据点并显示对应信息,所以点击数据点后检测是单击还是拖拽,是单击则激活dragPoint工具,鼠标变成手型,可拖拽数据点,检测是拖拽后,则恢复箭头鼠标,可用于点击。鼠标右键可在手型时恢复箭头点击状态,避免选择了错误的数据点需要拖拽才能恢复。
主要代码如下:

bool isSeriesClicked = false;
private void tChart1_ClickSeries(object sender, Steema.TeeChart.Styles.Series s, int valueIndex, MouseEventArgs e)
{
    curResultPointIndex = valueIndex;//点击的数据点索引
    ChangeResultPoint(curResultPointIndex);//处理显示
    isSeriesClicked = true;
}
DateTime mouseDownTime;
private void tChart1_MouseDown(object sender, MouseEventArgs e)
{
    mouseDownTime = DateTime.Now;
}

private void tChart1_MouseUp(object sender, MouseEventArgs e)
{
    var time= (DateTime.Now - mouseDownTime).TotalSeconds;
    if (time > 0.3 )//判断为拖拽
    {
        dragPoint1.Active = false;
        tChart1.Cursor = Cursors.Default;
        if (ResultPoint!=null && ResultPoint.Count > curResultPointIndex)
        {
            var point = ResultPoint[curResultPointIndex];
            point.OldVaule = point.CurVaule;
            point.CurVaule = line2.YValues[curResultPointIndex] ;
            ChangeResultPoint(curResultPointIndex);
        }

    }
    else//判断为点击
    {
        if (isSeriesClicked)
        {
            dragPoint1.Active = true;//激活控件
            isSeriesClicked = false;
            UpdataMidResultMenu(ResultPoint);//处理函数
        }
        
        
    }
}
private void tChart1_MouseClick(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Right)
    {
        dragPoint1.Active = false;
        tChart1.Cursor = Cursors.Default;
    }
}

实现上下线拖动控制

效果如下,可鼠标拖动红色线:
在这里插入图片描述

属性设置:
在这里插入图片描述
在这里插入图片描述

实现上下线获取平均值

private void ColorLine1_EndDragLine(object sender)
{
  if (ResultPoint == null || curResultPointIndex >= ResultPoint.Count || ResultPoint[curResultPointIndex].MidValues == null) 		   
        return;
  var maxValue = colorLine1.Value > colorLine2.Value? colorLine1.Value: colorLine2.Value;//获取两条线最大值
  var minValue = colorLine1.Value > colorLine2.Value?colorLine2.Value: colorLine1.Value;//获取两条线最小值
  var allMidPoints = ResultPoint[curResultPointIndex].MidValues;
  List<double> points = new List<double>();
  //获取两条线中间的所有数据
  for (int i = 0; i < allMidPoints.Count; i++)
  {
      if (allMidPoints[i] >= minValue && allMidPoints[i] <= maxValue)
          points.Add(allMidPoints[i]);
  }
  var arg = points.Count <= 0?0: points.Average();
  UpdateChartLable(points.Count, arg);
}

修改背景色

效果:
在这里插入图片描述
首先设置背景色
在这里插入图片描述
控件右击打开属性
在这里插入图片描述
将√去掉
在这里插入图片描述
边框颜色选择:
在这里插入图片描述

调整图表边距

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yyuanyuxin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值