halcon图像内容在c#环境下显示多个对象容易出现闪烁现象,对于c#控件我们第一时间想到的是双缓冲,halcon提供了另一个机制来解决这个问题
在显示图像开始时候禁用图像显示刷新
HSystem::SetSystem("flush_graphic", "false");
在对象加载完成后,打开刷新,然后显示一个看不见的对象
HSystem::SetSystem("flush_graphic", "true"); SetColor(winID, data->backgroundColor); DispLine(winID, -100.0, -100.0, -101.0, -101.0);
以上代码其实是c++代码,为了实现halcon对象的显示和滚动缩放等效果,通过cli代理,将c#内的halcon图像对象及文字等转化到c++中,由于c++的hobject对象赋值"="操作并非深度复制,且内部动态管理内存,这样将c#中的hobject对象转化到c++中的对象列表来显示及刷新操作,避免了c#对halcon图像对象的内存管理不力导致内存爆炸等问题.