请问如何在Image->Canvas实时画曲线时去掉闪烁?(100分)

  • 主题发起人 主题发起人 yj33cn
  • 开始时间 开始时间
Y

yj33cn

Unregistered / Unconfirmed
GUEST, unregistred user!
要求采集数据的同时显示曲线。
 
这个问题很熟悉,可惜一时想不起来了
 
无非就是这样:
首先禁止进行屏幕显示更新,一次过画完全部的东西,然后让系统进行刷新。
这种功能,自己做会比较麻烦,不如考虑使用IOComp,人家已经做得好好的,
何必事事自己开发呢?
 
一个最简单的方法,不知道你用的是Delphi几,
在Form的OnCreate中加入 Form1.DoubleBuffered
即可以搞定了。
不过可能有负作用的^_^
 
用Polyline或者PolyDraw来画(Windows API函数),这样比多次调用MoveTo和LineTo效率
高得多,具体是哪一个记不清了,得回去看一下《Windows95 程序设计》(Charlez Petzold)
的大作。
 
bcb6和delphi6好像都有这个问题,但是在bcb5和delphi5里就不闪(同样的代码),我也碰到过,实在不行你就用form->canvas画,不会闪。
 
象娃娃说得,可以使用双缓冲机制,但是不一定使用改熟悉,可以自己控制。
不过用现成的东西还是容易很多,如果不是很严格要求的,也可以用用。
 
使用Pixmap做缓冲就可以了。
 
DoubleBuffered = true;
 
直接使用dc画,建两个dc,用双缓冲机制
 
试一试 TChart,我认为挺好
画线:
Delphi:
for x := Xmin to Xmaxdo
Chart1.Series[0].AddXY(x,y,'',clTeeColor);
BCB:
for(x = Xin;x < Xmax;x += dx)
Chart1->Series[0]->AddXY(x,y,"",clTeeColor);
画出y随x变化的曲线
 
后退
顶部