大家帮帮忙!介绍下VC画动态曲线图的技术!高手进来啊!

woxihuanbohe 2003-05-13 08:02:07
要画动态曲线图,比如显示网络流量的那种,又比如windows资源管理器中展示CPU使用记录的动态曲线图!
这需要用到什么技术?参考什么资料?有什么好网站?
大家可否介绍下
...全文
739 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hakki 2003-06-06
  • 打赏
  • 举报
回复
不会吧 一个什么流量之类的东东还要求曲线“关键是圆滑”?

那 为什么windows的“CPU使用记录”仅用折线不用曲线呢?
难道是microsoft的程序员烂得连一个傅立叶级数都不写?
我想不是这样的吧!

我认为没有必要将曲线划多么圆 关键还是要完成其他的如统计报表输出打印等功能
显示嘛 跟"CPU使用记录"差不多就行了吧:D
yesblue 2003-06-06
  • 打赏
  • 举报
回复
其实关键是曲线要圆滑
BlueSky2008 2003-05-22
  • 打赏
  • 举报
回复
LineTo()
Tue 2003-05-22
  • 打赏
  • 举报
回复
用一个数组来记录曲线上定水平间隔点的y值,在OnDraw中绘制出来。
另外,开一个计数器,定时获取数据。
woxihuanbohe 2003-05-22
  • 打赏
  • 举报
回复
to: yuliangpei(踏雪无痕)
我的进度很慢,搞了好多几天了,
以上的一些问题已经解决,
现在就在搞曲线的移动。
非常谢谢你告诉的想法!

欢迎大家继续提供线索和讨论。

yuliangpei 2003-05-22
  • 打赏
  • 举报
回复
先用LineTo()画出曲线上相连的两个点,当下一个曲线点来临的时候将先前曲线图用BitBlt()函数向前平移一个曲线间隔点的位置。这样原来的最后一个曲线点变成倒数第二个曲线点,此时可以用LineTo()函数将倒数第二个曲线点与新加入的曲线点连接起来,依此类推,一切ok!
diablon 2003-05-14
  • 打赏
  • 举报
回复
这种不算是问题吧,关键是计算你所需点的算法,比如用三次样条曲线合成,
它有一种算法,再比如用NURBS曲线,又是另一种算法,这些都可以得出你
所需要的插入点的坐标值,就算是插值算法,也有多种,比如拉格朗日等。
只要把坐标算出来,就可以模拟出曲线了
wqs6 2003-05-14
  • 打赏
  • 举报
回复
同意diablon(波罗) 的说法
在数值分析和b样条曲线等书上有讲
只要给出关键点,然后调用算法(如NURBS曲线算法)就可以很方便的画出曲线来!
Skt32 2003-05-13
  • 打赏
  • 举报
回复
Plot Graphic Library
By Jonathan de Halleux

A library to plot data (lines, maps...) in MFC projects.

http://www.codeproject.com/miscctrl/pgllib.asp
woxihuanbohe 2003-05-13
  • 打赏
  • 举报
回复
to: alphasun(巨老的炮炮)
呵呵 不好意思 这不是我的作业 是我的job!
以前的帖子如果知道,麻烦转告下 谢谢!
woxihuanbohe 2003-05-13
  • 打赏
  • 举报
回复
to: Paladinrick(游侠里克)
多谢你提醒重画的做法

to: shilong(星矢の诗龙)
我想如果不用弧线,图象表达数字可能不是很精确。这跟取点的频率有关,就是说每两个点之间的时间间隔。取点的时候该遵循什么原则好呢?
还有Paladinrick(游侠里克) 提到的用连表保存,那有很多点的话,连表应该很庞大。
alphasun 2003-05-13
  • 打赏
  • 举报
回复
好像CSDN上总是出现大量重复的问题和帖子。好像是“一个”老师布置的作业。
shilong 2003-05-13
  • 打赏
  • 举报
回复
没有弧线呀,只是几个点挨得很近
tangsqd 2003-05-13
  • 打赏
  • 举报
回复
http://www.codeproject.com/miscctrl/#Charting Controls
Paladinrick 2003-05-13
  • 打赏
  • 举报
回复
其实用最简单的LineTo就可以了,用OnTimer进行触发。

不过要解决重画问题,也就是一旦最小化或者窗口移动,曲线就不见了,这个问题可以用链表记录原先所画的点,然后一旦窗口变动,就调出链表记录,进行重画。

我是菜鸟,这个问题也困扰过我,花点时间就能搞定。
woxihuanbohe 2003-05-13
  • 打赏
  • 举报
回复
to: shilong(星矢の诗龙)
谢谢 !我盯着CPU使用记录的动态曲线看了好久,跟你想的差不多,用timer控制,但是有些是弧线的,什么时候该画弧线,这也是个问题!
woxihuanbohe 2003-05-13
  • 打赏
  • 举报
回复
to: strongerman(猛男)


数据可以获得
就是如何用图形表达出来!
shilong 2003-05-13
  • 打赏
  • 举报
回复
时间横坐标,流量纵坐标,得到一个点
把每个相邻的点用LineTo连起来
strongerman 2003-05-13
  • 打赏
  • 举报
回复

应该不难吧?
主要是如何获得网络流量的数据
woxihuanbohe 2003-05-13
  • 打赏
  • 举报
回复
谢谢 Mackz(在相互)
LineTo()是画线段啊 有那么简单吗?你可以看看CPU使用记录的动态曲线图好象很复杂的。
我知道曲线是可以用直线段连成的 但是需要更精确啊 而且要动态更新 怎么可以作到呢 ?
请指点下!
加载更多回复(1)

19,469

社区成员

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

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