码迷,mamicode.com
首页 > 其他好文 > 详细

ArcGIS Engine开发鹰眼图的功能(代码优化篇)

时间:2019-10-24 15:27:31      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:完美解决   产生   html   tar   pre   观察   name   img   刷新方法   

在上一篇,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 = 255;
    IColor color = rgbColor;
    //实例化符号(Symbol)对象
    ISimpleLineSymbol simpleLineSymbol = new SimpleLineSymbolClass();
    simpleLineSymbol.Color = color;
    simpleLineSymbol.Width = 2;
    ISymbol symbol = (ISymbol)simpleLineSymbol;
    screenDisplay.SetSymbol(symbol);
    screenDisplay.DrawPolyline(geometry);
    screenDisplay.FinishDrawing();
}

 

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

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

 

最终效果图:

技术图片

 

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

ArcGIS Engine开发鹰眼图的功能(代码优化篇)

标签:完美解决   产生   html   tar   pre   观察   name   img   刷新方法   

原文地址:https://www.cnblogs.com/edcoder/p/11732103.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!