版权声明:本文为博主原创文章未经博主允许不得转载。 /horsee/article/details/
最近在读Halcon学习网上的一个大神的例程功能是通过hWindowControl控件在C#中实现鼠标交互、Hobject对象的记忆、重绘和删除、图像的縮放等等非常实用的操作。
这篇文章讲不了这么多只是发现了一点点有用的东西,所以记录下来
有时候,我们需要在窗口或者控件中顯示图像以及某些region、contour,甚至是交互时才会出现的ROI选择框
但是随着操作的频繁进行,我们在重绘窗口内容的时候会出现并不希望出现嘚闪烁,比如说我希望让绘制的多个contour对象能够一次性显示而不是每一个新的contour对象显示时,都去刷新一次窗口
我之前一直冥思苦想,不知道怎么去控制这个问题
读了大神的程序之后(还没读完),get到一点新知:当控制使用flush_graphic参数时可以解决这个问题。
可以看到,当不希望逐对象刷新时就把flush_graphic参数设置为false,这时候不论你在画布上绘制了多少对象,都不會去刷新窗口
而当flush_graphic参数重置为true时,可以通过对其中一个对象的显示把前序绘制的所有对象全部一次性显示在窗口上,这样就可以减少窗口的刷新次数从而解决不恰当的“闪烁”问题(其实不恰当的闪烁只是因为在不符合人类认知习惯的时候重绘了屏幕,因此这个方法實际上是按照人类的认知习惯统一了系统刷新窗口的时机)
Ps:忘了补充一点,这个操作只对windows系统有效如果是unix或者linux,则由于窗口显示刷新嘚机制不同该方法无效。