ArcEngine 图层无闪烁刷新

使用AE的同行经常会遇到这样的问题,图层刷新。目前常用的有以下几种方法:

1.完全刷新 MapControl.Refresh();

2.局部刷新 MapControl.Refresh(esriViewDrawPhase.esriViewAll,layerOrElement,envelope)

或者其他的如:

IActiveView activeView = MapControl.Map as IActiveView;
activeView.PartialRefresh(ESRI.ArcGIS.Carto.esriViewDrawPhase.esriViewBackground, layer,activeView.Extent);

以上的种种方法除却性能影响,都会有一个通病,那就是刷新时候要闪烁一下。

遇到有无闪烁刷新的需求,这时候就需要使用其他的接口。开始无从下手,突然有天看到ArcMap里面的时间轴功能,发现它居然是无闪烁刷新的,于是肯定AE中无闪烁刷新也是可以实现的。

废话不说了,无闪烁刷新的接口是:

IViewRefresh

RefreshItem 的方法解释的很清楚了,仅仅刷新新增的元素。

完整代码如下:

IViewRefresh viewRefresh = MapControl.Map as IViewRefresh;
viewRefresh.ProgressiveDrawing = true;
viewRefresh.RefreshItem(layer);

最后:

每一个GISer上辈子一定是折了翼的天使...所以今生请万分珍重

时间: 2024-08-10 00:07:33

ArcEngine 图层无闪烁刷新的相关文章

VC++大数据量绘图时无闪烁刷屏技术实现(我的理解是,在内存上作画,然后手动显示,而不再直接需要经过WM_PAINT来处理了)

http://hantayi.blog.51cto.com/1100843/383578 引言 当我们需要在用户区显示一些图形时,先把图形在客户区画上,虽然已经画好但此时我们还无法看到,还要通过 程序主动地刷新用户区,强制Windows发送一条WM_PAINT消息,这将引发视类OnDraw函数简单地将所有的图形对象重画,这样才完成了图形的 显示工作,但在刷新的同时会引起较明显的闪烁尤其是当画面面积较大.图像元素过多时尤为明显甚至达到无法正常工作的地步.因此,我们需要做相应的处理.本 文介绍了采用

Qt组件中的双缓冲无闪烁绘图

双缓冲绘图在Qt4中,所有的窗口部件默认都使用双缓冲进行绘图.使用双缓冲,可以减轻绘制的闪烁感.在有些情况下,用户要关闭双缓冲,自己管理绘图.下面的语句设置了窗口部件的Qt::WA_PaintOnScreen属性 ,就关闭了窗口部件的双缓冲.mywidget->setAttribute(Qt::WA_PaintOnScreen); 由于Qt4不再提供异或笔,组合模式QPainter::CompostionMode_Xor()并不是异或笔,Qt4只提供了QRubberBand实现矩形和直线的绘图反

ArcEngine 图层标注 (根据字段、角度)

转自chanyinhelv原文 ArcEngine 图层标注 (根据字段.角度) 今天做了一个用AE来控制图层是否显示标注,以及已哪一个字段作为标注的字段,以哪一个字段作为标注的角度,现将代码写下来,以备以后差用. public void EnableFeatureLayerLabel(IFeatureLayer pFeaturelayer, string sLableField, IRgbColor pRGB, int size, string angleField) { //判断图层是否为空

jquerymobile动态添的无索刷新

当我们使用Ajax或者javascript动态在页面上添加元素后,如添加select控件的option元素,添加ul的li元素.添加之后我们会发现,它们显示的样式不是jQuery Mobile的炫酷样式了,而变成了很丑陋的元素样式.如下图所示: 代码如下: <script> function myFunction() { var ul = document.getElementById("myul"); var li1 = "<li data-role=\&

form表单提交无页面刷新(非js)

先看一段代码(PHP例子) 1.表单代码(form.php): <?php header("Content-type: text/html; charset=utf8"); ?> <iframe name="testIframeName" style="display:none;"></iframe> <form target="testIframeName" method="

无闪烁图片切换备忘

<style type="text/css"> .scroll{margin:0 auto; width:500px; height:200px; position:relative; overflow:hidden;} .scroll ul{list-style-type:none; padding:0; margin:0; position:absolute; top:0;left:0; width:99999px; height:200px; } .scroll li

解决让刷新页面时不提示 &quot;重试或取消”对话框

如果刷新一个已经提交过的页面时,系统总是会提示一个 "重试或取消”的对话框.,如果是一个普通的页面,好象也无所谓,有就有,大不了多点一下.但是当我们是在子窗体中刷新父窗体时,就显得有点多余了.所以就想把这个对话框给去了.找了很的办法.总结一下. 一, window.opener.location.reload() 如果改页面没提交过,这个方法好使.但是这个页面一旦提交过后,系统就会提示"重试或取消”的对话框. 二 window.opener.location = window.open

前一阵子跟人谈多分屏桌面展示

前一阵子,在一个很特殊的情况下,和别人谈论多分屏桌面展示的问题. 以前没做过,突然想到的两个方案. 多少分屏算多呢,实际上那些家伙弄得是4*4 的16分屏.(具体像素未知,但是他们做的是16分屏.) 那些家伙做的是全球数据展示,做全球数据收集,定时每秒在4*4 的大显示器组上显示最后5 条数据在世界地图上的的位置. 当时谈到这个问题的时候,我的第一个想法: 首先弄一台PC机,作为主机,在其内存中做一张超大的图片,然后逻辑上等分4*4 的16份,分别编号, 再弄16台PC机,或者移动设备,作为工作

winform频繁刷新导致界面闪烁解决方法

转自龙心文 原文 winform频繁刷新导致界面闪烁解决方法 一.通过对窗体和控件使用双缓冲来减少图形闪烁(当绘制图片时出现闪烁时,使用双缓冲) 对于大多数应用程序,.NET Framework 提供的默认双缓冲将提供最佳效果.默认情况下,标准 Windows 窗体控件是双缓冲的.可以通过两种方法对窗体和所创作的控件启用默认双缓冲.一种方法是将 DoubleBuffered 属性设置为 true,另一种方法是通过调用 SetStyle 方法将 OptimizedDoubleBuffer 标志设置