MSCHART 控件,显示500万个数据点,如何显示

ThinkXi 2019-05-08 06:11:01
用mschart,微软自带的控件,做曲线图显示,一个波形有500万个数据点,怎么样能一次性显示出完整的波形图,用的是vc++,
目前用的put_RowCount设置列数,用setdata函数设置每一列对应的数据。
但是RowCount参数是short类型,500万超范围了,是不是mschart不能够实现,还是思路不对头,求指教,感谢!
...全文
830 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ThinkXi 2019-05-12
  • 打赏
  • 举报
回复
多谢各位的回复,现在的思路和大家想的差不多,按一定的算法,提取一部分点来显示,这样应该是可以的。
再有又碰到一个新问题,mschart一条曲线中,想改表某个点的颜色,或者做个特殊标记,用了如下方法:
CVcPlot vcPlot = (CVcPlot)(m_ChartWaveForm.get_Plot());
CVcSeriesCollection VcSeriesCollection = vcPlot.get_SeriesCollection();
CVcSeries vcSeriesFast = VcSeriesCollection.get_Item(1);
CVcDataPoints vcDataPoints = vcSeriesFast.get_DataPoints();
CVcDataPoint vcDataPoint = vcDataPoints.get_Item(100);//执行到此处,异常,为什么必须填-1,-1怎么代表是哪个点,
CVcMarker vcMarker = vcDataPoint.get_Marker();
vcMarker.put_Style(1);
CVcBrush vcBrush = vcDataPoint.get_Brush();
CVcColor vcColor = vcBrush.get_FillColor();
vcColor.Set(255, 255, 0);
现在的问题是vcDataPoints.get_Item(100),这个函数,只有输入-1才不异常,怎么指定特定的点来设置颜色呢?-1表示什么意思。
baita96 2019-05-11
  • 打赏
  • 举报
回复
这个怎么样?
量子 2019-05-11
  • 打赏
  • 举报
回复
思路不对,500万个点没必要同时全部加载到空间里,一方面放不下,另一方面也没必要,因为你不可能同时把500万个数据点都显示出来,横轴分辨率没那么高,都堆在界面上。你可以自己做个算法,根据你显示的横轴范围,动态选择一部分数据显示。例如,时间轴范围要显示500万个数据的全貌,但屏幕上显示像素宽度只有1000个点,那么就每隔5000个点抽一个数据显示出来就够了,如果用户放大了曲线看局部比如2000个点的局部,再根据放大后的时间轴宽度,每隔一个数据抽一个点显示
sichuanwww 2019-05-10
  • 打赏
  • 举报
回复
500W还是有挑战的,试试Matlab
zgl7903 2019-05-09
  • 打赏
  • 举报
回复
每N点抽出其中的最大值和最小值, 这样既可加速刷新,有不失波形的特征点
大树学长 2019-05-09
  • 打赏
  • 举报
回复
合成的曲线记得加抗锯齿
大树学长 2019-05-09
  • 打赏
  • 举报
回复
建议按照像素画点,电脑屏幕无法精确显示500万个点,根据不同的屏幕分辨率来分多少个点合成一个像素的纵坐标这样,每个像素直接的横坐标是不变的,都是紧挨着的,然后将所有像素连接起来,
sevancheng 2019-05-09
  • 打赏
  • 举报
回复
翻页显示,一页只显示一部分
fly4free 2019-05-08
  • 打赏
  • 举报
回复
是缩略图还是啥?
500万个点,那个是很长的,屏幕宽一般才 1980,4K平会多一些
肯定一次看不下,要想看, 要嘛就缩放,具体算法叫啥名不知道,反正实际屏幕上的一个像素点,可能是很多数据的【重复点】

要吗就分段,给一个滚动条,移动到哪儿,就看哪部分的
画图的DC 应该无限大吧
ThinkXi 2019-05-08
  • 打赏
  • 举报
回复
多谢回复,现在项目要求要一次看到整个波形,您说的抽样显示,有个问题,就是有些点是剧烈变化的点,可能和上一个点数值差距很大,这样的话,抽样显示波形就不对了。
不知道其他的控件是否支持,还有个LabView的控件,心里也没底,并且改动也很大,愁啊,
xiaobaiqing1983 2019-05-08
  • 打赏
  • 举报
回复
1、建议将500W的的数据放置在多条曲线拼接显示,否则会申请很大的一段连续内存,绘图效率很差。 2、建议考虑是否要一次显示这个多点,能否抽样显示 3、建议考虑数据分批显示
ThinkXi 2019-05-08
  • 打赏
  • 举报
回复
你好,请问怎么优化啊,就是说500万数据点,没法实现吗
smwhotjay 2019-05-08
  • 打赏
  • 举报
回复

干爆软件的节奏。。肯定要数据优化。降低模型。

15,980

社区成员

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

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