常州plc培训

常州PLC编程培训

常州和讯自动化培训中心欢迎您!
当前位置:网站首页 > 新闻中心 新闻中心
halcon教程之防止多窗口闪烁-常州PLC培训,常州上位机培训
日期:2024/1/11 9:13:58人气:  标签:常州PLC培训 常州上位机培训

在使用Halcon进行图像显示时窗口图像会闪烁,为了解决这个问题,Halcon提供了防止闪烁的函数:


即Halcon的系统设置参数设置函数set_system。


set_system具有参数值' flush_graphic '设置为’False’则窗口暂停刷新,将需要显示的内容存放到显示队列中。


当绘制完要显示的内容时将' flush_graphic '设置为’True’即可将显示队列中的值统一显示。


该方法确实在防止单窗口闪烁是非常有效,但是因为这个参数的设置属于系统级的,假如我们的系统存在两个甚至多个窗口,且每个窗口随机更新图像,无法做到每个每个窗口同时更新,则这个方法就无能为力了。


为了解决多窗口防止闪烁的问题,可以采用双窗口缓存的办法。


1)获取显示窗口的尺寸


window.GetWindowExtents(out hv_WindowRow, outhv_WindowColumn, out hv_WindowWidth, out hv_WindowHeight);

 


2)采用Open_Window打开一个缓冲窗口;


windowBuffer.OpenWindow(hv_WindowRow, hv_WindowColumn,hv_WindowWidth, hv_WindowHeight, 0, "buffer","");


看一下Halcon中关于这个函数的定义:


void HWindow.OpenWindow(int row,int column,int width,int height, HTuple fatherWindow,string mode,string machine)



前四个参数:int row, int column, int width, int height,为窗口的位置和尺寸;


HTuple fatherWindow:该缓存窗口隶属的窗口号;


string mode:打开窗口的模式;


'visible':正常的图像显示模式


'invisible':顾名思义该窗口是隐藏区,用于后台记录用,不显示;


'transparent':图像窗口是透明的,不显示图像,但是可以接受鼠标信息,可输出信息;


'buffer':这个模式也是不显示的,显示是需要将结果复制到显示窗口。


string machine:计算机名称,默认为空即可


3)将显示内容显示到缓存窗口;


  windowBuffer.SetPart(viewPort.ImagePart.Y,viewPort.ImagePart.X, viewPort.ImagePart.Bottom, viewPort.ImagePart.Right);


SetPart函数比较简单,不在多做介绍。


4)将缓存窗口的可视化结果复制到要显示的窗口中;


 windowBuffer.CopyRectangle(window, 0, 0,hv_WindowHeight-1, hv_WindowWidth-1, 0,  0);


该方法采用缓存窗口的方式防止图像窗口闪烁,避免了采用set_system设置系统级参数导致多窗口显示不理想的问题。

本文网址:
下一篇:没有资料

相关信息:
版权所有 CopyRight 2006-2013 常州和讯自动化培训中心 电话:0519-85602926 地址:常州市新北区府琛商务广场2号楼1409室
《中华人民共和国电信与信息服务业务经营许可证》 编号:苏ICP证1312012312号 网站统计 技术支持:常州山水网络
本站关键词:常州plc培训 常州PLC编程培训网站地图 网站标签
在线与我们取得联系