AE中绘制图形元素的方法

2023-11-14

AE中绘制图形元素的方法

Element元素对象是一个非常庞杂的对象集合,主要分为两大部分:图形元素(Graphic Element)和框架元素(Frame Element);

 5640523720110316121616026.png

图形元素包括GroupElement、MarkerElement、LineElement、TextElement、DataElement、PictureElement、和FillShapeElement等对象,它们都是作为图形的形式而存在的。

IElement是所有图形元素和框架元素都实现的接口,它可以确定元素的Geometry属性,Element是一个抽象类,IElement和ILineElement、ITextElement并不是父子关系,后者没有Geometry属性。

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

1 采用MapControl的DrawShape()方法。

在MapControl控件中通过DrawShape方法绘制的图形,在视图中进行缩放操作之后就会消失,这是因为这些图形本质上都是缓存的,仅仅是暂时存在的。如果要保存这些元素,就需要使用Mxd文件。

    ISimpleFillSymbol pSymbol = new SimpleFillSymbolClass();

    pSymbol.Color = pColor;

    Object symbol = pSymbol;

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

2 用IGraphicsContainer::AddElement把图形元素添加到视图并显示

   主要步骤:

   1 产生一个新的元素对象;

   2 确定元素显示时使用的Symbol(符号)和Geometry(几何对象);

   3用IGraphicsContainer::AddElement把图形元素添加到视图并显示

   4 刷新视图,让添加的元素可以显示出来。

添加IMarkerElement对象和ILineElement对象

   以LineElement为例添加它到视图中需要两个接口:IElement和ILineElement,前者用于确定线元素的Geometry,后者确定Symbol。需要注意的什么类型的元素配对什么类型的Symbol,例如LineElement元素只能用修饰LineElement对象的符号,也只能用Line或者Polyline作为Geometry,MarkerElement也是一样的,使用的是Marker类型的Symbol和点作为它的Geometry。具体例子:

                IMap pMap = axMapControl1.Map;

                IActiveView pActive = pMap as IActiveView;

 

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

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

                pLineSymbol.Width = 3;

                pGeo = axMapControl1.TrackLine();

              

                ILineElement pLineElement = new LineElementClass();     

                IElement pEle = pLineElement as IElement;

                pLineElement.Symbol = pLineSymbol;

                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);

 

                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);

画出来的图像:

5640523720110316122147082.png

 PictureElement对象

   往PageLayout控件添加任意范围的图片,即用到该对象,一般的话,我们可以向PageLayOut中插入一张位图图片,这种图片其实就是一种图形元素,即PictureElement对象。
    PictureElement是一个抽象类,有两个子类BmpPictureElement和EmfPictureElement,IPictureElement是两个子类都实现的接口,使用它可以用于操作一个图片元素。
    public void ImportPictureFromFile ( string Name);获取一张图片;
    public bool MaintainAspectRatio {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:\TEST\test.bmp");
            pPictureElement.MaintainAspectRatio = true;
            IElement pEle = pPictureElement as IElement;
            pEle.Geometry = pGeo;

            pGraphic.AddElement(pEle, 0);
            pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null,null);

        }
结果:
      

  

转载于:https://www.cnblogs.com/gisak/archive/2011/03/16/1985818.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AE中绘制图形元素的方法 的相关文章

  • js实现字母序号自动递增

    在实现一个考试管理系统的时候 可能会遇到试题的选项不是固定的情况 需要灵活的增加选项 选项自动递增 A B C D F 通过Unicode编码的方式可以灵活实现 本案例是基于layui表格实现的 如果是其他形式 可以修改部分代码 首先获取到
  • urlopen error [Errno 10061] 解决(附python 获取状态码)

    urllib2 URLError
  • 短连接和保持连接有什么区别,举个具体的网站开发的例子说明两者之间的区别

    短连接和保持连接是指客户端和服务器之间的网络连接模式 短连接是指客户端请求服务器后 发送完请求并接收到服务器的响应后 就立即关闭与服务器的连接 在下一次请求时 需要重新建立连接 这种模式下 服务器不需要在后台一直保持与客户端的连接 可以更好
  • 电阻分压器的阻值大小

    原文连接 https electronics stackexchange com questions 28897 how to choose value of resistor in voltage divider 在选择电阻作为分压器时
  • 一些常见warning的原因和解决方法

    在入职三周后 终于赶齐了接手项目落下两个月的项目 有了一些自己的空闲时间对项目进行整理 主要整理包括类目的整合 从原来一个系统文件夹下几百个文件整改为以MVC设计思想为原则的分文件夹整理类目 井然有序了很多 也不需要再用查找关键字来寻找想要
  • 单主机多网卡位于同一个网段

    一个设备有两张网卡 一个以太网卡 一个wifi无线网卡 如route命令输出的 eth0的IP地址是10 12 39 10 wlan0的IP地址是10 12 39 11 当eth0的RJ45接口的网线连上 wlan0的无线wifi不连上 发
  • Mysql语句整理大全

    综合使用 查询 目录 综合使用 书写顺序 select distinct from 表名 where 限制条件 group by 分组依据 having 过滤条件 order by limit 展示条数 执行顺序 from 查询 where
  • python爬虫对网页进行数据抓取

    1 拿到网页源代码 1 1 先看网址 和请求方式 1 2导入requests模块 1 3 发现爬不出来 是因为豆瓣做了伪装 1 3需要更换头部 1 4需要设置utf 8 要不然会乱码2 提取想要的数据 2 1 加载re模块 并且进行预加载
  • 相位误差补偿表LUT-创建

    LUT 1 相位误差补偿表 就是建立一个查找表对由gamma效应造成的投影仪光栅非正弦性进行一个补偿 2 相关资料可以看李中伟博士的论文 或者其他资料 3 步骤 3 1 获得理想相位图 用多步相移代替理想相位 3 2 获得实际相位图 3 3
  • 六、图形程序设计

    1 Swing概述 Swing是指 被绘制的 用户图形界面类 AWT是指像事件处理这样的窗口工具箱的底层机制 使用Swing的好处 Swing拥有一个丰富 便捷的用户界面元素合集 Swing对底层平台依赖的很少 因此与平台相关的bug很少
  • C语言编程 三角形图形绘制教程

    C语言编程 三角形图形绘制教程 三角形是计算机图形学中最基本的图形元素之一 也是很多图形和游戏中的重要组成部分 本文将介绍如何使用C语言编程绘制三角形 包括原始的点绘制方法和简单的三角形填充算法 C语言编程 三角形图形绘制教程 绘制三角形的
  • 高帧率手机 Flutter 列表慢慢拖动的时候会有明显的抖动

    高帧率手机上 Flutter列表慢慢拖动的时候会感觉到明显的抖动现象 比如 一加手机输入的运行频率为120hz 而显示屏的运行频率为90hz 滚动时 这种不匹配会导致性能下降 google团队通过以下的方法来解决此问题 void main
  • 在react中使用接口请求的方式

    在 React 中使用接口 数据交互的关键 React 是一个流行的 JavaScript 前端框架 用于构建交互式的用户界面 在实际开发中 我们经常需要与后端服务器进行数据交互 这就需要使用接口来获取和发送数据 本文将介绍在 React
  • 网络安全协议之IPSec协议

    简介 IPSec即IP安全协议 网络层在传输的时候可能会遭到攻击 这时我们需要用IPSec协议来进行保护 就像使用SSL协议来保护传输层一样 IPSec经常用于建立虚拟专用网络 VPN 它通过对IP数据包进行加密和认证 来提供两台计算机之间
  • 热力图(Thermodynamic diagram)绘制MATLAB代码详解

    目录 Preface 1 表格型热力图 Tabular thermal diagram 相关系数矩阵热力图 Thermal diagram of correlation coefficient matrix Thermal diagram
  • python-pcl安装和使用

    安装 因为工作中要进行点云数据的显示 因此要安装python pcl 网上搜了很多教程 但是安装中还是遇到很多问题 这里把自己遇到的和可能遇到的问题总结一下 环境 Ubuntu 14 04 python 2 7 6 pcl 1 7 0 网上
  • java反射-通过反射操作注解

    java反射 操作注解 创建注解 创建类注解 类名的注解 Target ElementType TYPE Retention RetentionPolicy RUNTIME interface Tablewang String value
  • 【调制BFSK】二进制频移键控FSK的数字调制(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 相移键控 PS K 是利用载波相位直接表示
  • java简单线程同步方法(volatile)实现线程同步

    学习笔记 多线程中的非同步问题主要出现在对域的读写上 如果让域自身避免这个问题 则就不需要修改操作该域的方法 用final域 有锁保护的域和volatile域可以避免非同步的问题 volatile关键字为域变量的访问提供了一种免锁机制 使用
  • React18.x + i18next + antd 国际化正确使用姿势及避坑指南

    如果你使用这个教程还不能够解决你的问题的话 直接私信我 免费一对一给你解决 一 使用vite创建一个react项目 具体的创建方法大家参考vite官方文档 大概的操作如下 如果需要更详细的 大家去自行搜索即可 pnpm create vit

随机推荐

  • C# 动态加载Treeview

    失败的方法一 public void showTreeview string sqlContent SELECT monitorType monitorContent FROM monitorcontent DataTable dtCont
  • Error Domain=DVTMachOErrorDomain Code=0“Found an unexpected Mach-O header code_ 0x72613c21

    Failed to generate distribution items with error Error Domain DVTMachOErrorDomain Code 0 Found an unexpected Mach O head
  • Qt_Qt报错No rule to make target

    第一种情况 Qt编译工程时候 所有用到的源文件包括头文件和库文件的 总路径长度不能超过190个左右字符 一旦超过 就会提示找不到那个文件 这个可能是Qt的makefile的机制问题 解决方法 工程文件夹名字命名尽量比较短 而且工程目录文件夹
  • 【java】for和foreach的区别

    一 概述 普通for循环在遍历集合时使用下标来定位集合中的元素 java在JDK1 5开始支持foreach循环 foreach在一定程度上简化了对集合的遍历 但某些情况下 foreach是不能完全代替for循环的 限制场景 1 forea
  • IC卡、ID卡、CPU卡、RFID和NFC的区别

    ID卡 ID卡是早期的电子标签 只有一个ID号 不可以存储任何数据 故叫ID卡 ID卡没有算法 不可写入数据 其ID出厂一次性写入 应用人员只可读出卡号加以利用 ID卡容易复制 安全性较低 应用 主要应用在门禁系统 企业工牌 安全性 ID
  • 【Photon Voice】介绍

    入门 Photon Voice 2是Photon Voice的后续版本 它带来了以下功能 改进了API和更好的Unity组件 与PUN2兼容 灵活性 由于现在它与PUN2分离 它可以与Photon Realtime Photon Bolt
  • PacketTracer简单使用】

    进入软件后 我所用的版本是5 3 汉化过 看到如下界面 搭建网络拓扑 上图中的1 最大空白地方叫工作空间 搭建网络拓扑的地方 分逻辑和物理空间 2处的两个图标可以切换模式 图中的3 我们需要选取的网络设备名称 如路由器 接线器 4就是具体型
  • 【ORBSLAM2点线融合】线特征图模型构建

    在SLAM中 通常用BA Bundle Adjustment 来实现多个三维点和不同相机位姿的优化 本文描述如何建立基于线特征的图优化 并推导相应的雅克比矩阵 并用g2o实现相应的类 1 线特征误差及观测模型 假设相机位姿为 T c w T
  • StableDiffusion本地部署图形化训练模块(炼丹)Kohya_ss安装步骤

    将出东方
  • websocket--技术文档--spring后台+vue基本使用

    阿丹 给大家分享一个可以用来进行测试websocket的网页 个人觉得还是挺好用的 WebSocket在线测试工具 还有一个小家伙ApiPost也可以进行使用websocket的测试 本文章只是基本使用 给大家提供思路简单实现 使用spri
  • PCL 间接平差法拟合平面

    目录 一 算法原理 1 原理概述 2 参考文献 二 代码实现 三 结果展示 一 算法原理 1 原理概述 通过传统最小二乘法对点云数据进行平面拟合时 可将误差只归因于一个方向上 本文假设误差只存在于 Z Z Z轴方向上 设点云拟合的平面方程为
  • echarts中配置项splitNumber踩坑记录

    splitNumber不按照设置的数目来显示怎么办 项目问题记录 踩坑记录 合理使用boundaryGap max 实际效果 项目问题记录 项目中有九宫格式九个柱状图显示 要求y轴显示三条分割线 两个分割间隔 使用同一个option 却展示
  • datawhale-web-task02

    0 背景 完成datawhale的web入门开发task02的学习 https github com datawhalechina whale web blob master task02 md task02内容如下 用户管理 通过上节课程
  • Linux安装JDK-8-附有百度网盘链接

    前提 全新安装 Linux 64位JDK8链接 提取码 x3s4 JDK官网下载地址 http www oracle com technetwork java javase downloads jdk8 downloads 2133151
  • 安装lamp详细版本

    font face font family 宋体 font face font family Verdana p MsoNormal li MsoNormal div MsoNormal margin 0cm 0cm 0 0001pt te
  • Java - 随机文件名生成 - 根据当前时间创建文件夹 - 文件上传后,放置到指定目录下(transferTo方式)

    目录 一 随机文件名生成 具体代码演示 二 根据当前时间创建文件夹 三 文件上传后 放置到指定目录下 参考链接 一 随机文件名生成 具体代码演示 UUID 模块是内置的 public static String getRandomName
  • [论文阅读] (02) SP2019-Neural Cleanse: Identifying and Mitigating Backdoor Attacks in Neural Networks

    神经清洁 神经网络中的后门攻击识别与缓解 Neural Cleanse Identifying and Mitigating Backdoor Attacks in Neural Networks Bolun Wang Yuanshun Y
  • Qt中使用C++中的std里的线程

    加入新的类 基类一定要选择QObject 使用C 中的thread save av cpp include save av h using namespace std 加入这个就可以使用C 里面的class thread 录制音视频 voi
  • iOS开发之ReactiveCocoa框架(RAC)第五篇队列与高级函数

    h文件 import ViewController h import ReactiveCocoa interface ViewController end implementation ViewController void viewDid
  • AE中绘制图形元素的方法

    AE中绘制图形元素的方法 Element元素对象是一个非常庞杂的对象集合 主要分为两大部分 图形元素 Graphic Element 和框架元素 Frame Element 图形元素包括GroupElement MarkerElement