您的位置:新葡亰496net > 奥门新萄京娱乐场 > NET描述arcobjects中的接口,AE中绘制图形元素的方

NET描述arcobjects中的接口,AE中绘制图形元素的方

发布时间:2019-12-10 13:47编辑:奥门新萄京娱乐场浏览(143)

    简介

    IMapControl接口最入眼的是包蕴IMap属性,还提供其它的属性用于:管理经常的外观展现,管理图层,加载地图像和文字书档案以至追踪在分界面上海展览中心示的图纸。

    小知识点:平时贰个接口的最新达成是 Default ,若是又多少个完结,是由此数字分别,数字越大,其版本也越新。**

    3.1 地图

    利用IMap接口展现各个数据源的多寡。
    IMap接口的分子
    ActiveGraphicsLayer:活动图片图层,若无将创建叁当中坚memory graphics layer。
    AddLayer:向地图中增添单个图层。
    AddLayers:向地图中增多三个图层。
    AddMapSurround:向地图中增多map surround。
    AnnotationEngine:地图使用的注记(标签)引擎。
    AreaOfInterest:地图的感兴趣区域。
    Barriers:barriers列表和标签权重。
    BasicGraphicsLayer:基本图形层。
    ClearLayers:从地图中移除全数图层。
    ClearMapSurrounds:从地图中移除全数旁注。
    ClearSelection:死灭地图选拔。
    ClipBorder:ClipGeometry周边三个可选边界。
    ClipGeometry:地图图层中八个要分开的模样。
    ComputeDistance:总结地图上五个点的偏离并重返结果。
    CreateMapSurround:成立并早先化一个map surround。从体制集中钦点三个可选样式。
    DelayDrawing:暂停绘制。
    Delay伊芙nts:将操作按批组合来减弱公告。
    DeletLayer:从map中删除图层。
    DeleteMapSurround:从地图中剔除map surround。
    Description:地图描述。
    DistanceUnits:地图的离开单位。
    Expanded:提出地图是还是不是足以扩展。
    FeatureSelection:地图中精选的因素。
    GetPageSize:得到地图的页面大小。
    IsFramed:建议地图是不是在贰个框架内并不是在方方面面窗口中绘制。
    Layer:给定序号的layer。
    LayerCount:地图中图层的多少。
    Layers:以uid表明项目标地图图层。假诺recursive是true,将以layers的花样再次来到layers。
    MapScale:数字格局的地图比例尺。
    MapSurroundCount:与地图相关的旁注数量。
    MapUnits:地图单位。
    MoveLayer:将一个图层移到别的岗位。
    Name:地图名称。
    RecalcFullExtent:重新计算全幅范围。
    ReferenceScale:分数格局的地形图仿照效法比例尺。
    SelectByShape:用五个几何样子和筛选条件(可选)在地形图中接纳要素。
    SelectFeature:接受多少个成分。
    SelectionCount:选取的要素的数量。
    SetPageSize:设置地图(可选)的页面大小。
    SpatialReference:地图的空中参谋。
    SpatialReferenceLocked:提议是还是不是允许改造空间参谋。
    UseSymbolLevels:提议是或不是利用symbol levels绘制地图。
    AnnotationEngine:map使用的annotion(label)引擎。
    AreaOfInterest:地图的感兴趣区域。
    类Map实现接口IMap。
     每一个地图像和文字件包罗最少三个Map对象。但每趟独有贰个Map能够获得主旨,这几个Map称作focus map(核心地图)。使用IMxDocument能够访谈能够访谈文书档案中的全数地图对象;IMxDocument::FocusMap再次来到当前抱有关键的地图援引。IMxDocument:Maps再次来到指向全体地图对象的援引(IMaps)。壹个地图像和文字书档案能够蕴涵自由数目标Map对象--数据视图中只突显宗旨地图。
     地图对象,管理意气风发密密层层图层对象。每一种图层有三个上空参谋。叁个上空参照他事他说加以考查定义一个分辨率(1/精度)和二个坐标种类。地图坐标类别活动安装为第一个图层的坐标种类,依照全部的图层范围总括分辨率。
    两种常用属性和方法:
    IMap.AddLayer Method(向map中添加layer)
    [Visual Basic.NET] Public Sub AddLayer(ByVal Layer as ILayer)
    [C#]        public void AddLayer(Ilayer Layer)
     AddLayer方法向地图中增加图层。使用LayerCount属性获得地图中图层的总量。假使map未有安装坐标连串,AddLayer自动设置地图的SpatialReference属性。本地图的空中参照他事他说加以考察属性设置后,地图的MapUnits和DistanceUnits属性也就安装了。AddLayer同期也设置layer的上空参谋。
    IMap.DeleteLayer Method(从Map中删除图层)
    [Visual Basic.NET] Public Sub DeleteLayer(ByVal Layer as ILayer)
    [C#]        public void DeleteLayer(ILayer Layer)
     假使四个图层在TOC窗口中被入选(IMxDocument::SelectedLayer卡塔尔国,能够将其传递到DeleteLayer方法中。当删除三个援引要素类的图层时,如FeatureLayer,实施IDataLayer2::Disconnect能知道对要素类的援引。
    IMap.FeatureSelection Property(IMap.FeatureSelection属性)
    [Visual Basic.NET] Public Property FeatureSelection as Iselection
    [C#]        public ISelection FeatureSelection{get;set;}
     ArcMap有四个分裂的挑精拣肥集,feature selection和element selection。三种不一致的指标表示了这个选择而且都贯彻了ISelection接口。feature selection对象还达成了IEnumFeature接口,element selection还达成了IEnumElement。ISelection接口用于clipboard类型的操作,IEnum接口针对群集中的项目。
     当您从IMap中访谈FeatureSelection时,重临一个ISelection。当你通过IActiveView::Selection选拔时,不仅可以够是因素接收,也得以是因素选取,决定于哪贰个高居活动状态--一次只能有三个高居活动状态。使用要素接纳保险援用到科学的选择。
     IEnumFeature在颇负因素图层上中国人民解放军海军事工业程高校业作。每一个FeatureLayer有二个ISelectionSet和IEnumFeature。IEnumFeature工作在全数FeatureLayer上,不可能用它遍历某二个图层的成分。
     注意,只有shape字段能作保用于采纳。IMap::FeatureSelection属性用于绘制地图采用,并非拜见要素属性。在shapefiles、coverage和geodatabases中要在乎。借使想遍历地图选用实施叁个操作,最佳访问每种图层的选用集并非成套地图的。
    IMap.Layer Property(IMap.Layer属性)
    [Visual Basic.NET] Public Function get_Layer(ByVal Index As Integer) As ILayer
    [C#]        Public ILayer get_Layer(int Index);
     Maps是由各个数据源中的无数图层组成。使用Layer属性来做客地图的特定图层。图层集从0起头。使用Layer属性和LayerCount属性在地形图中遍历各类图层。
     Layer属性重返三个ILayer援用。常用if(player is IFeatureLayer卡塔尔进行判别。比如,不要认为地图中的全体图层都以FeatureLayers。完结ILayer和IDataLayer接口的图层是立见功能图层。
     每一种地图也会有一个basic graphics layer,但并不带有在这里个天性再次来到的图层集中。通过BasicGraphicsLayer属性能够获得对那几个图层的援用。
    IMap.SelectByShape Method
      通过几何图形和选取条件(可选)选拔要素
    [Visual Basic.NET] Public Sub SelectByShape(ByVal Shape As IGeometry,ByVal env As ISelectionEnviroment,Byval justOne as Boolean)
    [C#]        public void SelectByShape(IGeometry Shape,ISelectionEnvironment env,bool justOne);
     SelectByShape在装有IFeatureLayer中检索与输入图形相交的成分,独有IFeatureLayer::Selectable属性设为TRUE时才可检索该图层。
     ISelectionEnvironment决定取舍结果。比如,创造四个新的取舍或向已存在的取舍集中加多要素。通过IMxApplication::SelectionEnviroment使用应用程序的选项条件。
     justOne变量调整找到二个要素后是不是终止搜索。
     寻觅达成后调用IActiveView伊夫nts::SelectionChanged文告选取已改造。

    AE中绘制图形元素的章程

    要精通AO中的类与接口,啥都不说,看代码:

    属性介绍

    3.1.1 Map 对象

    Element成分对象是二个非常混乱的靶子集结,主要分为两大片段:图变成分(Graphic Element)和框架成分(Frame Element);

    /*
     * Created by SharpDevelop.
     * User: noo
     * Date: 2009-8-19
     * Time: 10:01
     * 
     * AO中类、接口的关系,一个类世襲自多少个接口,MapClass类世襲自IActiveView和IMap
     */

    1. IActiveView

    • 这些本性接口首假使用以管理应用程序的视图以致绘图的操作。IPageLayout和IMap完成了那么些接口,这三个接口分别代表ArcMap中的多个视图。当必要利用IMap视图时,能够使用IMxDocument.FocusMap,其它二个则是运用IMxDocument.PageLayout来获取。
    • ArcMap中就只好有二个激活的视图,那么IMxDocument.ActiveView就是当前激活的视图。
    • ShowRulers ShowScrollBars ShowSelection
      既然IActiveView能够管理地图的绘图操作,那么相应设置多少个属性对此开展操作,那四特天性分别用于体现标尺 滚动条 选拔集。
    • ISelection
      本条性子用于操作选择集

      Map对象:在Map对象上能显得的图纸有两类,生龙活虎类是 地理数据,后生可畏类是 元素。
      地理数据满含 矢量类型的要素数据、栅格数据、Tin等外界数据等;那一个多少都保留在Geodatabase或数据文件如shapefile中,它们是用以GIS解析制图的源数据。
      成分,是少年老成种能够来得在Map上的目的,它分为:图产生分框架成分。图产生分得以显得出来;而框架成分当做了“容器”的剧中人物。  

     图片 1

    using System ;
    interface IActiveView//当前视图接口
    {
        void Refresh(卡塔尔(英语:State of Qatar);//刷新方法
        bool ShowScrollBars//是还是不是出示比例尺属性,可读写
        {
            get;
            set;
        }
    }
    interface IMap//地图接口
    {
        void AddLayer(卡塔尔(قطر‎;//加多图层方法
        int LayerCount//图层个数属性,只读
        {
            get;
        }
    }
    class MapClass:IActiveView,IMap//地图类世襲自上面八个接口,实际不仅仅这些,还包含像IGraphicsContainer等。
    {
        void IActiveView.Refresh(卡塔尔(قطر‎//为表明原理,以下的措施或品质并非实际的AO中的方法或性质的落实结果
        {
            Console.WriteLine ("刷新当前视图。"卡塔尔国;
        }
        private bool isShow;
        bool IActiveView.ShowScrollBars
        {
            get{return isShow; }
            set{isShow=value;}
        }
        
        void IMap.AddLayer()
        {
            Console.WriteLine ("加多图层。"卡塔尔(قطر‎;
        }
        private int count=5;
        int IMap.LayerCount
        {
            get{return count;}
        }
    }
    class Test
    {
        static void Main(卡塔尔(قطر‎//入口函数
        {
            Console.WriteLine ("n对前段时间的视图进行的操作与安装。n");
            IActiveView pActiveView=new MapClass ();
            pActiveView.Refresh ();
            pActiveView.ShowScrollBars =true;
            if(pActiveView.ShowScrollBars )
            {
                Console.WriteLine ("显式比例尺。"卡塔尔;
            }
            else
            {
                Console.WriteLine ("不显式比例尺。"卡塔尔国;
            }
            
            Console.WriteLine ("n对地图进行的操作与安装。n");
            IMap pMap=new MapClass ();
            pMap.AddLayer ();
            Console.WriteLine ("当前地图有{0}个图层",pMap.LayerCount 卡塔尔;
            
            //当一个类世袭自多个接口的时候,接口的功力其实正是把类中的方法或性质进行归类,如上边的IActiveView和IMap接口就兑现了差异作用
            //当然,要是同归于叁个类(IActiveView卡塔尔(英语:State of Qatar)中的个中三个接口(如IMap卡塔尔(قطر‎想达成其余三个接口(IActiveView)中的方法或性质,能够应用接口查询(QI)本事,具体见本身的其余风度翩翩篇博文“C#.NET描述arcobjctes中的接口查询(QI)技术”。
        }
    }

    2.Extent 和 FullExtent

    • Extent归属IEnvelope接口(完成吉优metry接口),该属性表示前段时间地图的视图范围。FullExtent表示的是Map的视图。
    • IEnvelope是叁个矩形框,至罕见三个坐标属性,XMin,XMax,YMin,YMax,CenterAt方法正是依照坐标点来张开操作的。
    • 既是是三个矩形框,那么就可以对那么些矩形框的朗朗上口实行调度,也能够由此测算和其余一个矩形框的老婆当军、并集来获取二个新的矩形框元素。

      在Map上所画的 圆形、矩形、在布局视图上加上的 指北针、图例、比例尺等图形对象,都以图表成分;在ArcMap中Map对象是由MXDocument对象的MapFrame对象管理,MapFrame是二个框架成分

    图表成分包蕴GroupElement、MarkerElement、LineElement、TextElement、DataElement、PictureElement、和FillShapeElement等目的,它们都以作为图形的样式而留存的。

    艺术介绍

    IMapControlDefault的点子主借使用以管理图层的,举例AddLayer 、DeleteLayer,还会有正是在控件上海展览中心开绘图,除了那几个之外,介绍多少个本人以为相比关键的章程。

      Map对象有双重身份:一方面是数码的管理容器,能够加载地理数据和图片成分,扮演了数额微处理器的剧中人物;另一面,它又足以让客商观察那几个数据,即扮演了数据显示屏的角色。当加载数据到Map对象的时候,Map对象是数码的官员;当改换视图范围,刷新地图的时候他是数额的显示者。

    IElement是享有图产生分和框架成分都达成的接口,它能够规定因素的Geometry属性,Element是三个抽象类,IElement和ILineElement、ITextElement并不是父亲和儿子关系,前面一个未有Geometry属性。

    1. AddLayerFromFile 和 AddShapeFile

    • 那是四个用于加多数据的法子。这里可以引申出一个思维,为何供给不相同的点子来拓宽多少的增进?那是因为在ArcMap中设有许多数据格式,不一样的多寡格式存款和储蓄的秘诀是不近似的,因而也亟需用差别的章程来开采。

      #### 2. DrawShape

    • IMapControl除了管理图层和多少之外,还恐怕有的功力正是张开绘图操作管理,在地图上制图图形就是使用这一个法子。

      #### 3. FromMapPoint ToMapPoint

    • ToMapPoint为将图纸设备坐标表示的二个点(X,Y卡塔尔(英语:State of Qatar)转变为地图上的二个点目的

    • FromMapPoint为将地图上的点转变为图形设备坐标。

      #### 4. TrackPolygon TrackLine TrackLine

    • 当大家须求追踪在地图 上所画的图样时,能够行使那多少个主意。

      Map对象主要实现的接口有:IMap,IGraphicContainer,IActiveVIew,IMapBookmark等接口。
      IMap接口重要用以管理Map对象中的Layer对象,要素选用集对象,MapSourround对象,空间参谋等目的。
      Map对象足以呈现图形成分(Graphics Element),Map对象通过IGRaphicsContainer接口来保管这一个因素对象,满含图产生分和框架元素。
      IGRaphicsContainer 重临的是Map对象中居于活动状态的GRaphics Layer引用指针,它能够是叁个Basicgraphicslayer,也能够是CompositeGraphicsLayer中的三个图层;或许是四个FDOGraphicsLayer注记图层。
      以下代码片段抓牢怎么着添加二个Element到Map上

       要在视图绘制图形的方法:

    图片 2图片 3

    1 采用MapControl的DrawShape()方法。

     1         /// <summary>
     2         /// 添加临时元素到地图窗口上
     3         /// </summary>
     4         /// <param name="pMapCtrl">地图控件</param>
     5         /// <param name="pEle">单个元素</param>
     6         /// <param name="pEleColl">元素集合</param>
     7         public void AddTempElement(AxMapControl pMapCtrl, IElement pEle, IElementCollection pEleColl)
     8         {
     9             try
    10             {
    11                 IMap pMap = pMapCtrl.Map;
    12                 IGraphicsContainer pGCs = pMap as IGraphicsContainer;
    13 
    14                 if (pEle != null)
    15                 {
    16                     pGCs.AddElement(pEle, 0);
    17                 }
    18                 if (pEleColl != null)
    19                 {
    20                     if (pEleColl.Count > 0)
    21                     {
    22                         pGCs.AddElements(pEleColl, 0);
    23                     }
    24                 }
    25                 IActiveView pAV = (IActiveView)pMap;
    26                 // 需要刷新才能即时显示
    27                 pAV.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, pAV.Extent);//PartialRefresh 局部刷新
    28             }
    29             catch (Exception)
    30             {
    31                 throw;
    32             }
    33         }
    

    在MapControl控件中通过DrawShape方法绘制的图纸,在视图中开展缩放操作之后就能无影无踪,那是因为那么些图片本质上都以缓存的,仅仅是一时半刻存在的。要是要封存那个要素,就需求动用Mxd文件。

    View Code

        ISimpleFillSymbol pSymbol = new SimpleFillSymbolClass();

      IActiveView接口定义了Map对象的多寡展示效果。使用该接口能够校正视图的限定,刷新视图;
      IActiveView 的PartialRefresh方法的不等参数,所代表的不等成效(刷新视图):
            1)PartialRefresh(esriViewGeography,pLayer,null卡塔尔国;// 用于刷新 --钦点图层--
            2)PartialRefresh(esriViewGeography,null,null卡塔尔国;// 用于刷新 --全部图层--
            3)PartialRefresh(esriViewGeoSelection,null,null卡塔尔(قطر‎;// 用于刷新 --所挑老婆--
            4)PartialRefresh(esriViewGraphicSelection,null,null卡塔尔;// 用于刷新 --所选用的图元--
            5)PartialRefresh(esriViewGraphics,pElement,null卡塔尔(قطر‎;// 用于刷新 --钦命图产生分--
            6)PartialRefresh(esriViewGraphics,null,null卡塔尔;// 用于刷新 --全体图产生分--

        pSymbol.Color = pColor;

      IMapBookmark接口用于管理全体的上空书签对象

        Object symbol = pSymbol;

    3.2.1 图层对象

        IGeometry pGeo=axMapControl1.DrawShape(pGeo,ref symbol);

             Map对象足以装载地理数据,那些数据以图层的款型加载到地图对象上的,图层对象Layer作为二个数额的“中介”存在,它本人未有转发地理数据;
             而独有是赢得了数码的援引,用于管理数据源的总是。地理数据始终维持在Geodatabase或然地理数据文件中。
             由于地理数据的品类二种,所以Layer类具备不少子类。接下来主要给我们介绍要素图层--FeatureLayer对象。

    2 用IGraphicsContainer::AddElement把图片元素增添到视图并出示

    3.1.3 FeatureLayer对象

       主要步骤:

      FeatureLayer类完毕的常用首要接口有:IFeatureLayer, IFeatureLayerDefinition, FeatureSelection, IGeoDataset, I吉优FeatureLayer, IIdentify, ILayerEffects。

       1 发生一个新的因素对象;

             IFeatureLayer接口主要用于安装要素图层的数据源(FeatureClass卡塔尔,IFeatureLayer的DataSoruceType获取FeatureLayer对象的数额源类型。别的通过Search方法,能够查询要素图层上切合某生龙活虎标准的因素集。

       2 鲜明因素突显时接受的Symbol(符号)和Geometry(几何对象);

             IGeoFeatureLayer就能够继承了ILayer和IFeatureLayer三个接口,用于调整要素图层的符号化和标明等
             IGeoDataset接口只有三个属性,它们用于管理地理要素集。
             1)Extent能够回来当前数据集的节制,是二个IEnevelope类型的对象;
             2)SpatialReference属性则足以让顾客获得这几个数据集的空中参谋

       3用IGraphicsContainer::AddElement把图纸成分增多到视图并彰显

             IFeatureSelection接口提供管理叁个图层中的要素的选料集的法子和品质
             以下代码片段演示了何等赢得要素图层相符条件的抉择集:

       4 刷新视图,让增添的因素得以显得出来。

    图片 4图片 5

    添加IMarkerElement对象和ILineElement对象

     1         /// <summary>
     2         /// 获取要素图层符合条件的选择集
     3         /// </summary>
     4         /// <param name="pFeatureLayer">要素图层</param>
     5         /// <param name="whereClause">过滤条件</param>
     6         /// <returns></returns>
     7         public IFeatureSelection SelectLayersFeatures(IFeatureLayer pFeatureLayer, string whereClause)
     8         {
     9             IFeatureSelection pFeatureSelection = pFeatureLayer as IFeatureSelection;
    10             if (pFeatureSelection == null)
    11             {
    12                 return null;
    13             }
    14 
    15             IQueryFilter pQueryFilter = new QueryFilterClass();
    16             pQueryFilter.WhereClause = whereClause;
    17             // pFeatureSelection由pFeatureLayer QI 获得,包含pFeatureLayer中的所有要素,
    18             // 通过过滤器 将满足条件的 要素过滤出来,执行完SelectFeatures后,pFeatureLayer中就剩下满足条件的要素了
    19             pFeatureSelection.SelectFeatures(pQueryFilter, esriSelectionResultEnum.esriSelectionResultNew, false);
    20             return pFeatureSelection;
    21         }
    

       以LineElement为例增多它到视图中需求八个接口:IElement和ILineElement,前边二个用于分明线成分的Geometry,后面一个鲜明Symbol。须要在意的怎么样类型的因素配成对怎样项目标Symbol,比方LineElement成分只好用修饰LineElement对象的标识,也必须要用Line也许Polyline作为Geometry,马克尔Element也是均等的,使用的是Marker类型的Symbol和点作为它的Geometry。具体育赛事例:

    View Code

                    IMap pMap = axMapControl1.Map;

      IFeatureLayerDefinition接口定义了CreateSelectionLayer方法,能够将八个图层选择聚集的因素转变为贰个单身的要素图层。

                    IActiveView pActive = pMap as IActiveView;

    3.1.4 矢量图层操作实例

     

      以下代码片段演示按行政区加载图层数据的功效,以此精晓IFeatureLayerDefinition 的CreateSelectionLayer方法的利用。

                    ISimpleLineSymbol pLineSymbol = new SimpleLineSymbolClass();  //设置Symbol属性

      使用IFeatureLayerDefinition的CreateSelectionLayer方法,将接收集生成四个新图层。

                    pLineSymbol.Color = GetRGB(0, 255, 0);

    图片 6图片 7

                    pLineSymbol.Width = 3;

     1         /// <summary>
     2         /// 按行政区范围创建行政区范围的图层
     3         /// </summary>
     4         /// <param name="pFeatureLayer">源数据图层</param>
     5         /// <param name="pGeometry">行政区范围</param>
     6         /// <param name="bXZQ">图层是否为行政区</param>
     7         /// <returns>新创建的图层</returns>
     8         public IFeatureLayer GetSelectionLayer(IFeatureLayer pFeatureLayer, IGeometry pGeometry, bool bXZQ)
     9         {
    10             try
    11             {
    12                 if (pFeatureLayer != null && pGeometry != null)
    13                 {
    14                     IQueryFilter pQueryFilter;
    15                     ISpatialFilter pSpatialFilter = new SpatialFilterClass();// 空间过滤器
    16                     IFeatureSelection pFeatureSelection = pFeatureLayer as IFeatureSelection;// 将源数据 当做一个选择集,再从中筛选出需要的
    17                     pSpatialFilter.GeometryField = pFeatureLayer.FeatureClass.ShapeFieldName;// 设置图形域为源数据要素类的图形域
    18                     pFeatureSelection.Clear();
    19                     if (!bXZQ)
    20                     {
    21                         pSpatialFilter.Geometry = pGeometry;// 设置图形过滤器的形状
    22                         // 如果遇到行政区层,必须设置此参数,否则这个行政区图层就不能只获取指定的省份,会把相邻的省份也添加创建到新图层
    23                         // 应该是去掉相邻行政区的意思
    24                         pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIndexIntersects;
    25                         pQueryFilter = pSpatialFilter;
    26                         // 进行过滤,貌似必须使用IQueryFilter接口,才能进行IFeatureSelection的过滤,但是需要图形过滤器来设置参数
    27                         pFeatureSelection.SelectFeatures(pQueryFilter, esriSelectionResultEnum.esriSelectionResultNew, false);
    28                     }
    29                     else
    30                     {
    31                         pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelContains;
    32                         pQueryFilter = pSpatialFilter;
    33                         if (pGeometry is IGeometryCollection)
    34                         {
    35                             for (int i = 0; i < (pGeometry as IGeometryCollection).GeometryCount; i  )
    36                             {
    37                                 pSpatialFilter.Geometry = (pGeometry as IGeometryCollection).get_Geometry(i);
    38                                 pFeatureSelection.SelectFeatures(pSpatialFilter, esriSelectionResultEnum.esriSelectionResultAdd, false);
    39                             }
    40                         }
    41                     }
    42 
    43 
    44                     IFeatureLayerDefinition pFLDefinition = pFeatureLayer as IFeatureLayerDefinition;
    45                     // 由于之前 将pFeatureLayer QI 到了 pFeatureSelection, 而之后对pFeatureSelection进行了过滤,
    46                     // 因此目前  pFeatureLayer中的要素已经是经过了过滤的结果了;在QI 到pFLDefinition ,执行CreateSelectionLayer 创建新图层
    47                     IFeatureLayer pNewFeatureLayer = pFLDefinition.CreateSelectionLayer(pFeatureLayer.Name, true, null, null);
    48                     pNewFeatureLayer.MaximumScale = pFeatureLayer.MaximumScale;
    49                     pNewFeatureLayer.MinimumScale = pFeatureLayer.MinimumScale;
    50                     pNewFeatureLayer.Selectable = pFeatureLayer.Selectable;
    51                     pNewFeatureLayer.Visible = pFeatureLayer.Visible;
    52                     pNewFeatureLayer.ScaleSymbols = pFeatureLayer.ScaleSymbols;
    53 
    54                     return pNewFeatureLayer;
    55                 }
    56             }
    57             catch (Exception)
    58             {
    59                 return null;
    60             }
    61             return null;
    62         }
    

                    pGeo = axMapControl1.TrackLine();

    View Code

                  

      IIdentify 接口定义了获得要素图层单个要素的习性
      ILayerFields接口可以一向拿走二个成分图层的成分类字段群集
      ILayerEffects接口用来设置多少个因素图层的亮度,折射率,相比较度。以下代码片段延时怎样设置要素图层特效。

                    ILineElement pLineElement = new LineElementClass();     

    图片 8图片 9

                    IElement pEle = pLineElement as IElement;

     1         /// <summary>
     2         /// 设置图层特效
     3         /// </summary>
     4         /// <param name="pFeatureLayer">要素图层</param>
     5         /// <param name="brightness">亮度</param>
     6         /// <param name="contrast">对比度</param>
     7         /// <param name="transparency">透明度</param>
     8         public void SetLayerEffects(IFeatureLayer pFeatureLayer, short brightness, short contrast, short transparency)
     9         {
    10             ILayerEffects pLayerEffect = pFeatureLayer as ILayerEffects;
    11             pLayerEffect.Brightness = brightness;
    12             pLayerEffect.Contrast = contrast;
    13             pLayerEffect.Transparency = transparency;
    14         }
    

                    pLineElement.Symbol = pLineSymbol;

    View Code

                    pEle.Geometry = pGeo;

     

     

                    IGraphicsContainer pContainer = pMap as IGraphicsContainer;

                    pContainer.AddElement(pEle, 0);

                   pActive.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);

      增添TextElement对象(用ITextElement接口定义了安装文字元素的品质,举个例子Text(字符)等

                    IMap pMap = axMapControl1.Map;

                    IActiveView pActiveView = pMap as IActiveView;

     

                    ITextElement pText = new TextElementClass();

                    pText.Text = "从今日初阶你就是自家的了就如驴子同样给你盖个章";

                    IElement pEle = pText as IElement;

                    IPoint point = new PointClass();

                    point.PutCoords(e.mapX-30, e.mapY 10);

     

    NET描述arcobjects中的接口,AE中绘制图形元素的方法。                IFormattedTextSymbol pTextSymbol =new TextSymbolClass();

                    ICallout pCallout = new BalloonCalloutClass();

                    pCallout.AnchorPoint = point;

                    pTextSymbol.Background = pCallout as ITextBackground;

     

                    pText.Symbol = pTextSymbol;

                    pEle.Geometry = point;

                    IGraphicsContainer pgraphic = axMapControl1.Map as IGraphicsContainer;

                    pgraphic.AddElement(pEle,0);

                    axMapControl1.Refresh();

    添加FillShapeElement对象

         FillShapeElement是二个抽象类,它的子类有CircleElement、EllipseElement、PolygonElement和RectangleElement。这么些指标的同步天性是它们的Geometry属性都以一个查封的二维图形。

         IFillShapeElement接口是负有FillShapeElement类都落实的接口,它定义了用于彰显图形元素的Symbol属性,这些Symbol属性必得设置为IFillsymbol对象。

                   IMap pMap = axMapControl1.Map;

                    IActiveView pActiveView = pMap as IActiveView;

                    pGeo = axMapControl1.TrackPolygon();

     

                    ISimpleFillSymbol fillsymbol = new SimpleFillSymbolClass();

                    fillsymbol.Style = esriSimpleFillStyle.esriSFSDiagonalCross;

                    fillsymbol.Color = GetRGB(0, 255, 0);

     

                    IFillShapeElement pFillElement = new PolygonElementClass();

                    pFillElement.Symbol = fillsymbol;

                    IElement pEle = pFillElement as IElement;

                    pEle.Geometry = pGeo;

     

                    IGraphicsContainer pGraphics = pMap as IGraphicsContainer;

                    pGraphics.AddElement(pEle, 0);

    画出来的图像:

    图片 10

     PictureElement对象

       往PageLayout控件增添大肆范围的图样,即用到该对象,平日的话,咱们能够向PageLayOut中插入一张位图图片,这种图片其实正是朝气蓬勃种图产生分,即PictureElement对象。
        PictureElement是多个抽象类,有八个子类BmpPictureElement和EmfPictureElement,IPictureElement是多个子类都完毕的接口,使用它能够用于操作八个图片成分。
        public void ImportPictureFromFile ( string Name**卡塔尔(英语:State of Qatar);获取一张图片;     public boolMaintainAspectRatio {get; set;}该属性决定调解图片尺寸时是不是保持其长度宽度比例   具体贯彻往PageLayout控件加多图片例子:       private void axPageLayoutControl1_OnMouseDown(object sender,  ESRI.ArcGIS.Controls.IPageLayoutControlEvents_OnMouseDownEvent e)
            {
                IPageLayout pPageLayout = axPageLayoutControl1.PageLayout;
                IGraphicsContainer pGraphic = pPageLayout as IGraphicsContainer;
                IActiveView pActiveView = pPageLayout as IActiveView;             IGeometry pGeo = axPageLayoutControl1.TrackRectangle();
                IPictureElement pPictureElement = new BmpPictureElementClass();
                pPictureElement.ImportPictureFromFile(@"f:TESTtest.bmp");
                pPictureElement.MaintainAspectRatio = true;
                IElement pEle = pPictureElement as IElement;
                pEle.Geometry = pGeo;             pGraphic.AddElement(pEle, 0);
                pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null,null);         }**
    结果:
           图片 11

      

    本文由新葡亰496net发布于奥门新萄京娱乐场,转载请注明出处:NET描述arcobjects中的接口,AE中绘制图形元素的方

    关键词:

上一篇:重新认识python,面向对象篇

下一篇:没有了