博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Arcgis Engine(ae)接口详解(8):临时元素(element)
阅读量:6294 次
发布时间:2019-06-22

本文共 5346 字,大约阅读时间需要 17 分钟。

hot3.png

//主地图的地图(map)对象                IMap map = null;                IActiveView activeView = null;                //IGraphicsContainer用于操作临时元素,可以通过map获取                IGraphicsContainer gc = map as IGraphicsContainer;                //删除所有临时元素                gc.DeleteAllElements();                activeView.Refresh();                //画点的临时元素~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                IPoint point = new PointClass();                point.PutCoords(100, 200);                //首先定义点元素的样式                //ISimpleMarkerSymbol意思是ISimple(简单的)Marker(点)Symbol(样式),MarkerSymbol处理simple的还有其他很多种,具体看IMarkerSymbol的实现类                ISimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbolClass();                //点颜色                simpleMarkerSymbol.Color = SymbolHelper.CreateColorByRgb(255, 0, 0);                //点大小                simpleMarkerSymbol.Size = 5;                //IMarkerElement代表点元素, new MarkerElementClass()是实例化点元素                IMarkerElement markerElement = new MarkerElementClass();                //设置点样式                markerElement.Symbol = simpleMarkerSymbol;                //IElement是所有元素(element)的顶层接口                IElement element = markerElement as IElement;                //设置元素几何对象,因为是画点所以赋值一个点                //通过观察之后的添加线和面元素可发现,几何对象赋值都在IElement接口,而样式(symbol)赋值都在各种类型元素的接口                element.Geometry = point;                //添加元素到地图,最后刷新,完成添加                gc.AddElement(element, 0);                activeView.Refresh();                //画线的临时元素~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                //线的生成不是重点,这里就随便了                IPolyline polyline = null;                //定义线样式                //ISimpleLineSymbol意思是ISimple(简单的)Line(线)Symbol(样式)                ISimpleLineSymbol simpleLineSymbol = new SimpleLineSymbolClass();                //颜色                simpleLineSymbol.Color = SymbolHelper.CreateColorByRgb(255, 0, 0);                //线宽                simpleLineSymbol.Width = 2;                //ILineElement代表线元素, new LineElementClass()是实例化线元素                ILineElement lineElement = new LineElementClass();                //赋值线样式                lineElement.Symbol = simpleLineSymbol;                //IElement是所有元素(element)的顶层接口                element = lineElement as IElement;                //设置元素几何对象,因为是画线所以赋值一个线                        element.Geometry = polyline;                //添加元素到地图,最后刷新,完成添加                gc.AddElement(element, 0);                activeView.Refresh();                //画面暂时略                //以上是画临时元素的详细代码解析,在实际使用中,一般可以使用封装好的方法一行代码解决                //画点                DrawElementHelper.DrawPoint(map, point, 255, 0, 0, 3);                //画线                DrawElementHelper.DrawLine(map, polyline, 255, 0, 0, 3);                //以上方法没有刷新,需另外调用刷新                //PS:因此如果同时画多个元素,每次画都刷新会很卡                activeView.Refresh();

上述代码调用的封装接口

///         /// 通过rgb创建颜色        ///         ///         ///         ///         /// 
public static IColor CreateColorByRgb(int r, int g, int b) { IRgbColor color = new RgbColor(); color.Red = r; color.Green = g; color.Blue = b; return color as IColor; } /// /// 画点 /// 不带刷新 /// /// /// /// 颜色r /// 颜色g /// 颜色b /// 点大小 ///
public static IMarkerElement DrawPoint(IMap map, IPoint point, int r, int g, int b, double size) { ISimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbolClass(); //点颜色 simpleMarkerSymbol.Color = SymbolHelper.CreateColorByRgb(r, g, b); //点大小 simpleMarkerSymbol.Size = size; //IMarkerElement代表点元素, new MarkerElementClass()是实例化点元素 IMarkerElement markerElement = new MarkerElementClass(); //设置点样式 markerElement.Symbol = simpleMarkerSymbol; //IElement是所有元素(element)的顶层接口 IElement element = markerElement as IElement; //设置元素几何对象,因为是画点所以赋值一个点 //通过观察之后的添加线和面元素可发现,几何对象赋值都在IElement接口,而样式(symbol)赋值都在各种类型元素的接口 element.Geometry = point; IGraphicsContainer gc = map as IGraphicsContainer; gc.AddElement(element, 0); return markerElement; } /// /// 画线 /// 不带刷新 /// /// /// /// 颜色r /// 颜色g /// 颜色b /// 线宽 ///
public static ILineElement DrawLine(IMap map, IPolyline polyline, int r, int g, int b, double width) { ISimpleLineSymbol simpleLineSymbol = new SimpleLineSymbolClass(); //颜色 simpleLineSymbol.Color = SymbolHelper.CreateColorByRgb(r, g, b); //线宽 simpleLineSymbol.Width = width; //ILineElement代表线元素, new LineElementClass()是实例化线元素 ILineElement lineElement = new LineElementClass(); //赋值线样式 lineElement.Symbol = simpleLineSymbol; //IElement是所有元素(element)的顶层接口 IElement element = lineElement as IElement; //设置元素几何对象,因为是画线所以赋值一个线 element.Geometry = polyline; IGraphicsContainer gc = map as IGraphicsContainer; gc.AddElement(element, 0); return lineElement; }

 

转载于:https://my.oschina.net/u/1251858/blog/1581374

你可能感兴趣的文章
[WinApi]邮槽通信C/S实例
查看>>
linux NFS配置:NFS相关概念及其配置与查看
查看>>
需求转化到文档维护
查看>>
《互联网运营智慧》第7章“简单cdn”正式版下载
查看>>
如何解决SQL Server 2008 R2中“阻止保存要求重新创建表的更改”的问题!
查看>>
基于Xcode原型驱动的iOS应用设计
查看>>
SOA标准之----SCA架构思想
查看>>
9.VMware View 4.6安装与部署-connection server(View Replica Server)
查看>>
项目管理和产品管理绉议
查看>>
Rafy 领域实体框架设计 - 重构 ORM 中的 Sql 生成
查看>>
编程之基础:数据类型(二)
查看>>
倒排索引PForDelta压缩算法——基本假设和霍夫曼压缩同
查看>>
java基础--相等
查看>>
记一次网站服务器搬迁实录
查看>>
Sql server restore script(还原数据库正确的步骤)
查看>>
牛客网刷题汇总(一)附解析
查看>>
(转) Deep Learning in a Nutshell: Reinforcement Learning
查看>>
微信说中国人的国庆长假 境内游西湖外滩上榜
查看>>
VR/AR会是微信后马化腾进军的战场吗
查看>>
推荐系统的评分描述
查看>>