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圖像對象的內存管理不力導致內存爆炸等問題.