您现在的位置:首页 >
技术文章
> 检测器械中波形测算技艺 |
http://www.qctester.com/ 来源:
本站原创
浏览次数:2419 发布时间:2013-3-12 QC检测仪器网 |
这样,用户在屏幕上看到的是一幅完整的图画,就可以消除第一种原因引起的“闪屏”现象。要解决第2种原因造成的“闪屏”现象,则需要对Windows的刷屏机制进行适当地修改。第1种方法是将默认的背景刷子颜色修改为透明色,将其设置为NULL。第2种方法是拦截系统的WM_ERASEBKGND消息,在其调用默认的基类函数前,直接返回false,这样系统就不会对屏幕的背景进行刷新。
另外,在Delphi或BCB中,可以直接选取PaintBox组件,该组件的特点是在它的画布上粘贴新的图像时,会自动覆盖先前的图像,不需调用Refresh函数来刷新,而且在其大小不变的情况下,不会自动刷新背景。
这样,结合前面的双缓冲机制进行波形绘制,就不会触发Windows系统下的WM_ERASEBKGND消息,从而达到消除“闪屏”现象的目的。和象素点不一一对应,需要进行插值或峰值等复杂计算时,耗费的时间则会成倍增加。事实上,在波形移动速度不快,设置参数也不发生改变时,当前的波形和上一次的波形有很大一部分是相同的,只是在位置上进行了平移,这部分图像是不需要重新绘制的。Windows下的区域图像复制功能和区域刷新功能使得在绘制新波形时,可以直接利用上一次波形中不需更改的部分,从而节省大量的绘图时间。
下面将通过示意图来说明如何进行图像复用。加快波形绘制速度要加快波形的绘制速度,就应当考虑如何使每一屏的绘制内容尽可能的减少,也就是下一屏的图像应当充分利用上一屏图像的内容。下面将介绍如何使用多层图像叠加技术和图像复用技术,来加快波形的绘制速度。在测试仪器的波形图中,图像内容一般包括背景、波形、网格和标记。而需要不断进行更新的只有波形层,而背景和网格则很少改变。
结合前面的双缓冲技术,我们可以将以上内容在不可见的后台屏幕分层进行绘制,然后利用函数将其它各层的内容透明粘贴到背景层的相应位置,最后再将其复制到屏幕显示区域进行显示。这样,不需要重新绘制的图层可以直接粘贴,从而加快波形成像速度。测试仪器的分析软件中,在进行波形绘制以前,往往需要经过一系列的计算,来确定每一个波形象素点的位置。
如果每一次刷新都将屏幕上的波形重新绘制,就会在这样的计算上耗费大量的时间。当采样点如图1所示,假设整个波形显示区的宽度是80个象素点,每次屏幕刷新,波形从右向左移动20个象素点。那么,每次波形绘制时,可以先将AC段的波形直接复制到OB段,然后将区域BC刷新后绘制新的波形。波形复制可以通过前面介绍的BitBh函数或CoPyRect函数来实现,区域刷新可以通过Fil次ect来实现。结束语给出了彻底解决屏幕闪烁现象的方法,探讨了如何加快动态波形的绘制速度。对动态波形的绘制有一定的参考意义。
意见箱:
如果您对我们的稿件有什么建议或意见,请发送意见至qctester@126.com(注明网络部:建议或意见),或拨打电话:010-64385345转网络部;如果您的建设或意见被采纳,您将会收到我们送出的一份意见的惊喜!
①凡本网注明“来源:QC检测仪器网”之内容,版权属于QC检测仪器网,未经本网授权不得转载、摘编或以其它方式使用。
②来源未填写“QC检测仪器网”之内容,均由会员发布或转载自其它媒体,目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,且不承担此类作品侵权行为的直接或连带责任。如从本网下载使用,必须保留本网注明的“稿件来源”,并自负版权等相关责任。
③ 如涉及作品内容、版权等问题,请在作品发表之日起两周内与本网联系,否则视为放弃相关权利。
|
| | | |
|