如何实现曲线的动态缩放?

warcraftmgq 2008-12-06 10:57:30
在绘制曲线的时候,当当前点的X值大于绘制区域坐标的最大X值时,如何动态的改变绘制区域坐标并绘制曲线呢(要实现的结果就是将所有曲线都显示在绘制区域内,绘制区域的大小不能变化)?
...全文
215 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
warcraftmgq 2008-12-10
  • 打赏
  • 举报
回复
我是做汽车底盘测功机控制软件的,大约一秒钟要采集5-10个点左右
我也考虑过存全局数组,在超过绘制区域最大X值时,改变绘制区域scale,然后重画整条曲线
但是等到数组比较大的时候感觉比较慢,在cls后重画闪烁现象比较严重。
wap21 2008-12-09
  • 打赏
  • 举报
回复
up
duyin2004 2008-12-09
  • 打赏
  • 举报
回复
1.SCALE 来改变画布坐标的大小范围
line 来画图,p1.cls 要将数据送全局数组,然后进行重画,每次动态使用scale改变画布坐标时,将图形清掉,再从头画(或者知道断点,将清的图形再画上,和后面的接上也可以)人眼是看不出来的,只看见曲线在走,和放大缩小
这个采集图形显示我做过,如果采集的数据频率高,最好不要时时显示图形,最好储存数据做历史曲线回放
2.api函数画图快,但不太方便
filec75 2008-12-08
  • 打赏
  • 举报
回复
帮顶
filec75 2008-12-08
  • 打赏
  • 举报
回复
不懂,up
熊孩子开学喽 2008-12-08
  • 打赏
  • 举报
回复
3种方法:
1:后台开一个大的PICTURE控件,在上面画出完整曲线,然后PAINTPICTURE到前台的显示区域来.
2:在画点的时候就按比例选择数据,比如你有1000个数据,显示区是500个像素宽,那你可以每2个数据画一个点,怎么选法你可以自己考虑,你可以把2个点的平均值画上去,也可以干脆只画上其中任意一个点.
3:采用自定义坐标,就是PICTURE自带的那个SCALE方法,可以将物理宽度500像素的控件映射成一个你自己定义的坐标系,比如10000,只要在这个范围内,你随便画,控件会自动缩放到实际像素范围内的.

最后一个方法似乎最理想,不过老实说,我最讨厌,像素就是像素,所有API都是用像素,不要用那些乱七八糟的单位.

809

社区成员

发帖
与我相关
我的任务
社区描述
VB 多媒体
社区管理员
  • 多媒体
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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