求助:VC6.0 MFC High-Speed charting控件画动态曲线横坐标设置

hwy1993 2018-08-07 04:36:18
下图是我在MFC界面上放置了一个High-Speed charting画图控件,用来动态显示串口上传的数据,1秒钟更新5个点,这个画图控件一次可以显示500个点,现在横坐标设置的是自动显示,当数据更新时的效果是整个波形在向左移,而横坐标是每隔100个点显示一次坐标值,我希望达到的效果是能够每隔一段时间(比如10秒)显示一下横坐标的坐标值,在数据更新的过程中横坐标在10秒、20秒、30秒......的地方才显示,而且显示的也是10、20、30,或者直接显示当前时间,精确到秒,请问这个怎么实现呢?
...全文
1084 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sugar迷糊 2020-08-17
  • 打赏
  • 举报
回复
可以考虑更改 源代码ChartAxis.cpp中的DrawTick函数中的内容。
if (m_bIsHorizontal)
{
if (TickPos<m_StartPos || TickPos>m_EndPos)
bTickOnAxis = false;
if (!m_bIsSecondary)
{
if (bTickOnAxis)
{
pDC->MoveTo(TickPos,m_AxisRect.top+1);
pDC->LineTo(TickPos,m_AxisRect.top+4);
}
if (bLabelOnAxis)
{
//我自己更改的内容,可供参考
TChartString tmp = _T("");
int allsize = m_pXAxisName.size();
if (dTickVal < allsize)
{
tmp = m_pXAxisName[dTickVal];
//m_pindex++;
pDC->ExtTextOut(lLabelPos-TextSize.cx/2-15,m_AxisRect.top+5,
ETO_CLIPPED|ETO_OPAQUE,NULL,tmp.c_str(),NULL);
}
}
}
else
{
if (bTickOnAxis)
{
pDC->MoveTo(TickPos,m_AxisRect.bottom-1);
pDC->LineTo(TickPos,m_AxisRect.bottom-4);
}
if (bLabelOnAxis)
{
pDC->ExtTextOut(lLabelPos-TextSize.cx/2,m_AxisRect.bottom-5-TextSize.cy,
ETO_CLIPPED|ETO_OPAQUE,NULL,strBuffer.c_str(),NULL);
}
}
}
Freethin 2019-06-06
  • 打赏
  • 举报
回复
参考这个 https://blog.csdn.net/czyt1988/article/details/8740500
wfk12345678 2018-10-23
  • 打赏
  • 举报
回复
楼主可以来份源码吗?我用vc++添加这个控件一直失败。跪求,邮箱1463431379@qq.com
bbli19 2018-09-17
  • 打赏
  • 举报
回复
这个据我所知,如果只是用这个控件里的自带函数的话,似乎达不到你说的目的。 可能需要改High speed charting源码,如果你说的功能是不需要滚动条之类的功能,建议还是自己写一个,模板参考鸡啄米教程中的cpen画线。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧