//会闪屏的代码,更新图像函数如下(以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":定义是否刷新所有窗口
对于halcon与MFC或c#编程中,当写入滚轮放缩图像时,图像会闪屏的解决方法
原文:http://www.cnblogs.com/Asher-Wong/p/7945271.html