//會閃屏的代碼,更新圖像函數如下(以MFC為例)*******************************************************
void CGeomLocationApp::UpdateImageEx(Hobject Image, //圖像
Hobject &objDispR, //顯示圖形紅色
Hobject &objDispG, //顯示圖形綠色
Hobject &objDispB, //顯示圖形藍色
Hobject &objDispY, //顯示圖形黃色
Hlong hWindowHandle, //窗口句柄
BOOL bInitial //是否對圖形進行初始化操作
)
{
//復位顯示圖形
if (bInitial==TRUE)
{
objDispR.Reset();
objDispG.Reset();
objDispB.Reset();
objDispY.Reset();
}
//清楚顯示窗口
clear_window(hWindowHandle);
//顯示圖像
disp_obj(Image,hWindowHandle);
//顯示圖形
if (objDispR.Id()!=H_EMPTY_REGION)
{
set_color(hWindowHandle,"red");
disp_obj(objDispR,hWindowHandle);
}
if (objDispG.Id()!=H_EMPTY_REGION)
{
set_color(hWindowHandle,"green");
disp_obj(objDispG,hWindowHandle);
}
if (objDispB.Id()!=H_EMPTY_REGION)
{
set_color(hWindowHandle,"blue");
disp_obj(objDispB,hWindowHandle);
}
if (objDispY.Id()!=H_EMPTY_REGION)
{
set_color(hWindowHandle,"yellow");
disp_obj(objDispY,hWindowHandle);
}
set_color(hWindowHandle,"red");
}
//會閃屏的代碼,更新圖像函數如下*******************************************************
如需不閃屏,只需在clear_window前后,加入兩個函數,通過設置系統的flush_graphic,來實現,其代碼如下
void CGeomLocationApp::UpdateImageEx(Hobject Image, //圖像
Hobject &objDispR, //顯示圖形紅色
Hobject &objDispG, //顯示圖形綠色
Hobject &objDispB, //顯示圖形藍色
Hobject &objDispY, //顯示圖形黃色
Hlong hWindowHandle, //窗口句柄
BOOL bInitial //是否對圖形進行初始化操作
)
{
//復位顯示圖形
if (bInitial==TRUE)
{
objDispR.Reset();
objDispG.Reset();
objDispB.Reset();
objDispY.Reset();
}
set_system("flush_graphic","false");
//清楚顯示窗口
clear_window(hWindowHandle);
set_system("flush_graphic","true");
//顯示圖像
disp_obj(Image,hWindowHandle);
//顯示圖形
if (objDispR.Id()!=H_EMPTY_REGION)
{
set_color(hWindowHandle,"red");
disp_obj(objDispR,hWindowHandle);
}
if (objDispG.Id()!=H_EMPTY_REGION)
{
set_color(hWindowHandle,"green");
disp_obj(objDispG,hWindowHandle);
}
if (objDispB.Id()!=H_EMPTY_REGION)
{
set_color(hWindowHandle,"blue");
disp_obj(objDispB,hWindowHandle);
}
if (objDispY.Id()!=H_EMPTY_REGION)
{
set_color(hWindowHandle,"yellow");
disp_obj(objDispY,hWindowHandle);
}
set_color(hWindowHandle,"red");
}
//其原因是"flush_graphic":圖形更新參數,true顯示實時更新,false不更新可提高運行速度
其默認為true,實時更新,太是當圖像太大時,一來讀取是需要,顯示時間的,二來清除圖像有黑屏這段時間,這使得我們會有閃屏的感覺,這時,我們關閉實時顯示,清除后再打更新圖像流,便使得圖像刷新時不會閃。
同時,也引入下halcon函數中set_system的一些常用參數的意義,其轉載自http://blog.csdn.net/xy943294069/article/details/41867973,"sunny被注冊"的文章,感謝其分享
set_system( : : SystemParameter, Value : )設定系統參數
border_shape_models:設置模板是否必須在ROI內
"flush_graphic":圖形更新參數,true顯示實時更新,false不更新可提高運行速度
"int2_bits":圖像縮放相關參數,-1為自動
"backing_store":定義是否刷新所有窗口
