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);
}

修改背景色

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

调整图表边距

在这里插入图片描述

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
C++ Builder中的TChart控件是一个非常强大的数据可视化工具,可以用于绘制各种类型的图表,包括线图、柱状图、饼图等等。下面是TChart控件的详细使用方法: 1. 添加TChart控件:在C++ Builder的控件面板中,选择TeeChart组件,将TChart控件拖动到窗体上即可。 2. 设置TChart控件的属性:在Object Inspector中,可以设置TChart控件的各种属性,包括标题、坐标轴、图例等等。 3. 添加数据:在TChart控件中添加数据非常简单。可以通过代码或者设计器来添加数据。以添加一个线图为例,可以按照以下步骤来添加数据: ```c++ TLineSeries *Series1 = new TLineSeries(this); Series1->ParentChart = Chart1; Series1->Title = "Line Chart"; Series1->AddXY(1, 10); Series1->AddXY(2, 20); Series1->AddXY(3, 30); ``` 以上代码创建了一个TLineSeries类型的对象Series1,并把它添加到TChart控件Chart1中。然后,通过AddXY函数来添加数据,其中第一个参数是x轴的坐标值,第二个参数是y轴的坐标值。 4. 设置数据系列的属性:可以通过代码或者设计器来设置数据系列的各种属性,包括颜色、线型、点型等等。以设置线图的颜色为例: ```c++ Series1->Color = clRed; ``` 以上代码设置了Series1的颜色为红色。 5. 绘制图表:最后,调用TChart控件的Repaint函数,可以在窗体上绘制出图表。 ```c++ Chart1->Repaint(); ``` 以上就是TChart控件的基本使用方法。通过设置各种属性和添加数据系列,可以绘制出各种类型的图表,并进行各种定制化的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Yyuanyuxin

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

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

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

打赏作者

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

抵扣说明:

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

余额充值