关于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是对LabelElement等刷新。此外在文档中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刷新效果是一样的;先写到这里,以后研究了更多再继续写

其实这个问题在我刚刚弄gis开发的时候就觉得很重要,你想想数据量大了以后每一步的操作都要全部刷新一遍,那得浪费多少时间啊,所以我找了些资料,自己也研究实验了一下,算是有点小的总结了。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值