在使用 ArcGIS Engine开发的时候,会出现一个问题,那就是如果你写了下面的两个语句
m_activeView.Refresh();//或者是某种部分刷新的语句
m_mapControl.FlashShape(...);
这个时候会发现居然是图形先闪烁,然后才会刷新背景。搞得客户总是以为我们没有准确的定位到他所需要的图形。因为闪烁的时候背景上确实还没有出现那个Geometry。
使用下面的方法就可以解决这个问题了。
m_activeView.Refresh().//获者是某种部分刷新语句
m_activeView.ScreenDisplay.UpdateWindow();//这条语句是关键。
m_mapControl.FlashShape(...);
添加了这条语句后,就不会出现这种情况了。出现这个问题好像是由于图形显示和闪烁不在同一个线程中执行导致的。闪烁图形是一个很快的操作,而刷新背景却需要比较复杂的计算,所以先出来的语句后执行结束。使用 m_activeView.UpdateWindow强制重绘。就可以让代码在此等待。等到刷新确实搞定了。才开始执行FlashShape。
m_activeView.Refresh();//或者是某种部分刷新的语句
m_mapControl.FlashShape(...);
这个时候会发现居然是图形先闪烁,然后才会刷新背景。搞得客户总是以为我们没有准确的定位到他所需要的图形。因为闪烁的时候背景上确实还没有出现那个Geometry。
使用下面的方法就可以解决这个问题了。
m_activeView.Refresh().//获者是某种部分刷新语句
m_activeView.ScreenDisplay.UpdateWindow();//这条语句是关键。
m_mapControl.FlashShape(...);
添加了这条语句后,就不会出现这种情况了。出现这个问题好像是由于图形显示和闪烁不在同一个线程中执行导致的。闪烁图形是一个很快的操作,而刷新背景却需要比较复杂的计算,所以先出来的语句后执行结束。使用 m_activeView.UpdateWindow强制重绘。就可以让代码在此等待。等到刷新确实搞定了。才开始执行FlashShape。