本人欲写一个类似于示波器一样的信号实时显示界面,在进行动态刷新的同时,为了能寻找信号的周期,必须将实时信号缩小一定的倍数来观察.
目前我是这样实现的:使用一个1ms 的定时器逐个将数组中的数据通过描点的方式动态显示.如果要缩小N倍,则每隔N个数据显示一个点.
但是这样很明显的,随着N的增大,图像失真越来越严重.
在此请教一下,如何能实现向示波器那样的,缩小了之后感觉点数没有少,失真也可以接受.(老板要求两周搞定,请大家不吝赐教.)

解决方案 »

  1.   

    1ms? 用OnTimer? 用OnTimer的话最少100ms一次采样。失真是很大的。
    如果你用的是其它精确计时方法的话。我觉得你不用每隔N个数据显示一点,而改用数据全部显示,但是把X轴单位加大,比如原来20个相素显示10个数据点,那现在就用20个相素显示20个数据点,这样就缩小了一倍(或者说显示范围扩大了一倍)。显示40个数据点,那肯定有20个是实际没有显示上去的,但是因为被相邻的相素所覆盖,但是失真是不会很大的。总之一句话,调整比例,而不牺牲采样点。
      

  2.   

    to  rick29(rick.z):
    若区域面积变小了,你是怎么做到失真少的,能否给个代码参考一下,我也在研究这些问题,好像缩小了失真严重,不知道有没有好的做法
      

  3.   

    比较好的方案应该是要通过插值算法算出来的,用StretchBlt吧,mode设置为halftone.
      

  4.   

    在内存中的位图上直接绘制图形,然后用StretchBlt贴到屏幕上
      

  5.   

    我写了一部分:http://community.csdn.net/Expert/TopicView1.asp?id=4184269,不过一用到ScrollView就出了很多问题
      

  6.   

    自己搞定:将缩放的数据的坐标(x,y)根据缩放比例换算成实际坐标后再现实出来,效果不错啊。
    遗憾的是,使用StretchBlt没有成功。
    不过,仍然感谢大家的热情相助。