本文主要是介绍关于IActiveView接口的PartialRefresh与Refresh,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
其实这个问题在我刚刚弄gis开发的时候就觉得很重要,你想想数据量大了以后每一步的操作都要全部刷新一遍,那得浪费多少时间啊,所以我找了些资料,自己也研究实验了一下,算是有点小的总结了。
首先,像放大缩小这些全图操作那就是没有办法的,肯定是要全图刷新的;其他像编辑部分要素或者是其他选择的时候很多时候不是全图操作,那就看PartialRefresh了。
esriViewBackground | Map grids | Page/snap grid |
esriViewGeography | Layers | Unused |
esriViewGeoSelection | Feature selection | Unused |
esriViewGraphics | Labels/graphics | Graphics |
esriViewGraphicSelection | Graphic selection | Element selection |
esriViewForeground | Unused | Snap guides |
以下是开发文档中对于PartialRefresh的第一个枚举参数的各个参数的解释,其实目前为主要使用2与3两个;其中常用的局部刷新是使用esriViewGeoSelection对选择集进行刷新,esriViewGraphics是对Label,Element等刷新。此外在文档中When selecting features, you must call PartialRefresh twice, once before and once after the selection operation.在重新选择要素的时候你需要先刷新2次,像这样
pMap.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, null);
pMap.Map.ClearSelection();
pMap.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, null);
然后再选择,再次刷新;
当然,现在我觉得这样其实还是有点麻烦的,我们可以这样,将刷新的不同相结合起来使用
pMap.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, (object)pCurrentLayer, pBuffer.Envelope);pMap.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, (object)pCurrentLayer, pBuffer.Envelope);
不要告诉我你看不懂,好吧,第二个参数我觉得可以不设,目前还没仔细研究;第三个参数就是基于你的当前选中的操作要素集获取到的IEnvelope,这要就实现了局部刷新,和ArcGIS刷新效果是一样的;先写到这里,以后研究了更多再继续写
这篇关于关于IActiveView接口的PartialRefresh与Refresh的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!