Teechart隐藏曲线

Teechart隐藏曲线

最近老大要我写一个上位机。。。虽然我是个单片机软件工程师,但谁叫我是新人呢,硬着头皮上吧。

上位机有个很重要的功能就是显示曲线,但是我们不可能为每一条曲线创建一个窗口,因此需要将多条曲线置于一个窗口内。但在有些时候我们又不需要观测某些曲线,这时我们就需要隐藏曲线这个功能。然而查阅大量资料我也没找到 teechart 有hide() , show() 这种类似的功能,那我只能另辟蹊径了。

先来看一下效果图

这里写图片描述

一开始我的想法是点击隐藏后将改变曲线颜色使其与背景色一致,但是这种方法有一个很致命的bug。举个例子,如果想要隐藏的曲线是最后绘制的那条曲线,而这条曲线又正好与上一条曲线数据相同,由于需要隐藏的曲线最后绘制,那么它将会覆盖掉上一条曲线,因为这条曲线被绘制成了背景色,这样的结果就是两条曲线都被隐藏,该方案pass。

正当一筹莫展的时候,我发现了 clear 这个函数。于是我采用了点击隐藏则清除曲线,显示曲线则重绘曲线的方式。

采用这种方式首先需要一个地方保存数据,这里使用 COleSafeArray 数组类来存储数据,先定义两个数组和一个显示标志位

COleSafeArray XValues;//存储横坐标
COleSafeArray YValues1;//存储纵坐标
bool m_IsDisplay;//显示曲线标志位
long count;//数据个数

然后再初始化函数OnInitDialog中创建它们并将复选框置于选中状态

DWORD numElements[] = {1};
XValues.Create(VT_R8,1,numElements);//初始化COleSafeArray数组
YValues1.Create(VT_R8,1,numElements);
m_IsDisplay = true;
m_CurveDisplay1.SetCheck(m_IsDisplay);//将复选框置于选中状态
count = 0;//计数清零

定义一个定时器,在OnTimer函数中添加数据

double temp;

temp = count;
XValues.ResizeOneDim(XValues.GetOneDimSize() + 1);//重定义数组大小
XValues.PutElement(&count,temp);//数组中放入数据

temp = rand();//生成随机数
YValues1.ResizeOneDim(YValues1.GetOneDimSize() + 1);//重定义数组大小
YValues1.PutElement(&count,temp);//数组中放入数据

count++;

最后在复选框 Check Box 事件处理函数中添加对曲线的相关操作

m_IsDisplay = !m_IsDisplay;
if(m_IsDisplay)
{
    m_chart.Series(0).AddArray(count,YValues1,XValues);
}
else
{
    m_chart.Series(0).Clear();
}

注意,没有改进过的teechart无法像我一样连续使用函数,请参考http://download.csdn.net/detail/hjq_19881123/8658405

至此,已经完成了所有的隐藏曲线操作了,自己去试试吧。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

蓝忧云枫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值