在上一篇,ArcGIS Engine开发鹰眼图的功能(基础篇)

上一篇的实现效果图如下,

如果仔细观察,会发现一个问题,即在“鹰眼”的区域,只要在红色线框内的注记会被覆盖。

如果红色框包括整张图的话,图上的注记都将不会显示。

是什么原因造成的呢?

原因是使用IFillShapeElement向鹰眼视图添加绘图框后,标注与绘图框冲突造成互相压盖。

我们来看一张表,

在基础篇中,我们使用的是IFillShapeElement面要素进行刷新的,现在我们改换为线要素的IScreenDisplay DrawPloyline

替换基础篇中的面要素刷新方法即可

/// <summary>
/// 使用线要素刷新(已解决重叠问题)(推荐使用)
/// 使用IScreenDisplay的DrawPolyline方法,在鹰眼视图画出红线框
/// </summary>
/// <param name="activeView">鹰眼视图的活动窗体</param>
/// <param name="geometry">制框范围</param>
private void DrawPolyline(IActiveView activeView, IGeometry geometry)
{
if (activeView == null)
return; //如果活动窗体为空, 则返回
//强行刷新鹰眼视图, 目的: 清除前一次的绘图框, 避免重复绘图框
axMapControl2.ActiveView.ScreenDisplay.UpdateWindow(); //解决重复绘图框的关键代码
IScreenDisplay screenDisplay = activeView.ScreenDisplay;
//Screen的绘图状态处于准备状态
//参数: (指定设备(Dc=Device), 缓冲区(-1=NoScreenCache,-2=AllScreenCache, -3=ScreenRecoding))
//解析: 设备(Device)参数指图形的绘制区域
//缓冲区(Cache)参数指图形是否经由缓存后再绘制在屏幕(Window/Screen)上。
//一般默认为NoScreenCache, 即不经过缓存直接绘制
screenDisplay.StartDrawing(screenDisplay.hDC, (System.Int16)esriScreenCache.esriNoScreenCache);
//实例化颜色对象
IRgbColor rgbColor = new RgbColorClass();
rgbColor.Red = ;
IColor color = rgbColor;
//实例化符号(Symbol)对象
ISimpleLineSymbol simpleLineSymbol = new SimpleLineSymbolClass();
simpleLineSymbol.Color = color;
simpleLineSymbol.Width = ;
ISymbol symbol = (ISymbol)simpleLineSymbol;
screenDisplay.SetSymbol(symbol);
screenDisplay.DrawPolyline(geometry);
screenDisplay.FinishDrawing();
}

刚才我们在表格中注意到,使用线刷新,虽然不会覆盖注记,但绘图框难以实时更新,产生重复。因此,我们在代码中,可以完美解决该问题

//强行刷新鹰眼视图, 目的: 清除前一次的绘图框, 避免重复绘图框
axMapControl2.ActiveView.ScreenDisplay.UpdateWindow();

最终效果图:

谢谢观看!本人初学GIS二次开发,如果有不对的地方,请多多包涵!

ArcGIS Engine开发鹰眼图的功能(代码优化篇)的更多相关文章

  1. ArcGIS Engine开发鹰眼图的功能(基础篇)

    鹰眼是用于调节全视域范围内主地图显示范围情况的副地图.它体现了地图整体与详细局部的关系. 用户可以通过鼠标单击或者画框等动作实现鹰眼与主地图的交互情况. 鹰眼功能的原理是通过主地图窗口的地图控件和鹰眼 ...

  2. ArcGIS Engine开发之量测功能

    1.距离测量 距离测量时,片段长度通过两点之间距离计算得到,全部长度通过片段长度的和计算得到.主要用到INewLineFeedback和IScreenDisplay两个接口. 1)INewLineFe ...

  3. ArcGIS Engine开发的ArcGIS 版本管理的功能

    原文:ArcGIS Engine开发的ArcGIS 版本管理的功能 转自:http://blog.csdn.net/linghe301/article/details/7965901 这是以前的Arc ...

  4. ArcGIS Engine开发之地图基本操作(4)

    ArcGIS Engine开发中数据库的加载 1.加载个人地理数据库数据 个人地理数据库(Personal Geodatabase)使用Miscrosoft Access文件(*.mdb)进行空间数据 ...

  5. ArcGIS Engine开发前基础知识(3)

    对象模型图 一.对象模型图中的类与接口 ArcGIS Engine 提供大量的对象,这些对象之间存在各种各样的关系,如继承.组合.关联等.对象模型图(Object model diagram,ODM) ...

  6. ArcGIS Engine开发前基础知识(2)

    ArcGIS基本控件简介 ArcGIS Engine控件是一组可视化的开发组件,每个ArcGIS Engine控件都是一个COM组件.这些组件包括MapControl,PageLayoutContro ...

  7. C#,ArcGIS Engine开发入门教程

    C#,ArcGIS Engine开发入门教程 转自:http://blog.csdn.net/yanleigis/article/details/2233674  目录(?)[+] 五实现 一 加载A ...

  8. 过实现鹰眼图这个功能来进一步学习MapControl控件

    我们通过实现鹰眼图这个功能来进一步学习MapControl控件.在实现鹰眼图之前,我们需 要接口有更深入的了解. 变主动为被动-出接口(OutBound interface) COM编程类似客户端和服 ...

  9. ArcGIS Engine开发基础总结(一)

    标准Engine功能 地图浏览    地图制作 数据查询 数据分析 及 所有的开发控件 —MapControl, PageLayout, Toolbar, TOC, ArcReader 对所有矢量和栅 ...

随机推荐

  1. 面试官问我:平常如何对你的 Java 程序进行调优?

    阅读本文大概需要 10 分钟. 作者:张俊城, 郭理勇, 刘建来源:http://t.cn/AiCTERJz Java 应用性能优化是一个老生常谈的话题,典型的性能问题如页面响应慢.接口超时,服务器负 ...

  2. 命令行利用ffmpeg实现rtmp推流《转》

    ffmpeg在以前介绍过,是一个相当强大的工具,我们这次利用它实现rtmp推流(最终推流地址统一为rtmp://127.0.0.1:1935/live/123). 1.首先下载ffmpeg和ffpla ...

  3. Git Bash 克隆project

    cd 到想要的路径,然后执行下面的命令

  4. 012 webpack中的router

    一:准备工作 1.App.vue <template> <div> <h1>这是 App 组件</h1> </div> </templ ...

  5. ES开启慢查询日志

    默认情况,慢日志是不开启的.要开启它,需要定义具体动作(query,fetch 还是 index),你期望的事件记录等级( WARN.INFO.DEBUG.TRACE 等),以及时间阈值. es有几种 ...

  6. wordpress 获取指定作者的所有 post meta

    $args = array( 'post_type' => array( 'post','knowledgebase'), 'post_status' => 'publish', 'aut ...

  7. ES6----拓展运算符 三个点【...】

    [...]拓展运算符是什么? es6中引入扩展运算符(...),它用于把一个数组转化为用逗号分隔的参数序列,它常用在不定参数个数时的函数调用,数组合并等情形.因为typeScript是es6的超集,所 ...

  8. CentOS7下的CDH 6.2.0 安装过程

    #install OS centos 7.5#install lsb packageyum install -y redhat-lsb #install net-tools package yum i ...

  9. Java13新特性 -- 重新实现旧版套接字API

    全新实现的 NioSocketImpl 来替换JDK1.0的PlainSocketImpl. 它便于维护和调试,与 NewI/O (NIO) 使用相同的 JDK 内部结构,因此不需要使用系统本地代码. ...

  10. 【mybatis】子查询

    networkResource的 resultMap <resultMap id="NetworkResultMap" type="com.chinamobile. ...