1. 如何使用动态显示技术
3.1概述
这个介绍主要说明如何有效地使用ArcGIS Framework中的动态显示技术。介绍当前的一些使用方法和需求,演示一些GIS中需要采用动态显示技术的例子,以及一些接口的使用介绍。
3.2 Dynamic map在动态显示技术中的使用
推荐使用基于DynamicMap类的IDynamicMap接口,来使Dynamic map可用或不可用。

下面是IDynamicMap使用代码:
[C#]
//Cast the dynamic map from the focus map.
IDynamicMap dynamicMap = m_hookHelper.FocusMap as IDynamicMap;
//Make sure to switch into dynamic mode.
if (!dynamicMap.DynamicMapEnabled)
dynamicMap.DynamicMapEnabled = true;
[VB.NET]
' Cast the dynamic map from the focus map.
Dim dynamicMap As IDynamicMap = CType(m_hookHelper.FocusMap, IDynamicMap)
' Make sure to switch into dynamic mode.
If (Not dynamicMap.DynamicMapEnabled) Then
dynamicMap.DynamicMapEnabled = True
End If
(上述或以下有可能涉及的代码都是.net例子,但是最近我自己完成了vc6.0的Demons)
当设置Dynamic map为Enable,那么动态显示将使用OPenGL的render context来绘制基本的地图图层和动态图层。
3.3 Dynamic mode下的绘图
以下是两种Dynamic mode绘图方式:
(1) 实现IDynaimcLayer接口中的DrawDynamicLayer方法
(2) 监听动态显示的两个事件:
IDynamicMapEvents.BeforeDynamicDraw;
IDynamicMapEvents.AfterDynamicDraw;
3.3.1 绘图方式的两种选择(事实是本质的draw都是OpenGL方法)
(1)使用AO的API
(2)直接调用OpenGL的API
默认情况下OpenGL的纹理(texture)可用。需要注意的是,在最初需要开始利用OpenGL的方法时,要求关闭OpenGL 2D texture flag。
3.4绘图方式采用使用AO的API
[C#]
//Set the marker symbol.
m_dynamicSymbolProps.set_DynamicGlyph(esriDynamicSymbolType.esriDSymbolMarker,
m_markerGlyphs[2]);
//Draw a marker symbol.
DynamicDisplay.DrawMarker(m_point);
[VB.NET]
'Set the marker symbol.
m_dynamicSymbolProps.DynamicGlyph(esriDynamicSymbolType.esriDSymbolMarker) = m_markerGlyphs(2)
'Draw a marker symbol.
DynamicDisplay.DrawMarker(m_point)
In the following code example, drawing is done using a compound marker symbol using the dynamic display API:
[C#]
//Draw the item as a compound marker. This means that you do not have to draw the items and its
//accompanying labels separately, thus allowing you to write less code and better set
//the marker symbol.
m_dynamicSymbolProps.set_DynamicGlyph(esriDynamicSymbolType.esriDSymbolMarker,
m_markerGlyphs[2]);
//Drawing a compound marker symbol using six strings.
m_dynamicCompoundMarker.DrawCompoundMarker6(m_point, "TOP", "BOTTOM", "Item " +
Convert.ToString(r[0]), heading.ToString("###.##"), m_point.X.ToString(
"###.#####"), m_point.Y.ToString("###.#####"));
[VB.NET]
'Draw the item as a compound marker. This means that you do not have to draw the items and its
'accompanying labels separately, thus allowing you to write less code and better set
'the marker symbol.
m_dynamicSymbolProps.DynamicGlyph(esriDynamicSymbolType.esriDSymbolMarker) = m_markerGlyphs(2)
'Drawing a compound marker symbol using six strings.
m_dynamicCompoundMarker.DrawCompoundMarker6
(m_point,
"TOP",
"BOTTOM",
"Item " & Convert.ToString(r(0)),
heading.ToString("###.##"),
m_point.X.ToString("###.#####"), m_point.Y.ToString("###.#####"))
3.5绘图方式使用OpenGL的API
[C#]
GL.glDisable(GL.GL_TEXTURE_2D);
GL.glPushMatrix();
GL.glLoadIdentity();
// Draw a simple point.
GL.glBegin(GL.GL_POINTS);
GL.glColor3f(1.0f, 1.0f, 0.0f); //Yellow
GL.glVertex2f((float)x, (float)y);
GL.glEnd();
GL.glPopMatrix();
GL.glEnable(GL.GL_TEXTURE_2D);
[VB.NET]
GL.glDisable(GL.GL_TEXTURE_2D)
GL.glPushMatrix()
GL.glLoadIdentity()
' Draw a simple point.
GL.glBegin(GL.GL_POINTS)
GL.glColor3f(1.0F, 1.0F, 0.0F)
GL.glVertex2f(CType(x, Single), CType(y, Single))
GL.glEnd()
GL.glPopMatrix()
GL.glEnable(GL.GL_TEXTURE_2D)
3.5动态图层
动态图层也是普通的图层。它实现了普通图层的接口,当然为此你必须最小程度上实现ILayer接口。事实上,实现了ILayer接口能够使自己加载到map上,也能使自己被放在内容列表中。需要实现一个动态图层,也需要实现IDynamicLayer接口,那就有如下的方法需要被实现:
|
DrawDynamicLayer
|
在绘制阶段决定画什么内容
|
|
DynamicLayerDirty
|
表明上次画完后的动态显示是否改变
|
|
DynamicRecompileRate
|
重新编译率是以百分之一秒为间隔的,这使得编译阶段的动态显示中的绘制方法(DrawDynamicLayer)可以被调用。
|
由于动态显示是处于激活状态的,这就意味着它就有固定的循环过程。在每次的阶段绘制过程中,都会检查DynaimcLayer中的脏标志,来重绘所有的动态图层中的内容。
(...待续-jx1228)
分享到:
相关推荐
ArcGIS 9.2是其早期的一个版本,虽然已有些许年份,但在特定环境和需求下仍具使用价值。本文将详细介绍如何在Windows 7操作系统上安装ArcGIS 9.2,以及其中的关键步骤——安装License Manager。 首先,我们关注到...
ArcGIS 9.2 新的 授权文件 ...三、此版本 License Manager 不用破解,安装完之后在 License Manager 设置好授权文件路径及 Desktop Administrator 中的主机名称即可 ESRI官网的 License Manager 的下载地址: ...
在9.2版本中,IMS支持动态图层、图层透明度控制、图层叠加等功能,使得用户可以通过Web浏览器查看和操作地图,极大地拓展了GIS的使用范围。 总结来说,"arcgis 9.2 全系列授权文件"涵盖了GIS工作流程中的各个关键...
在9.2版本中,用户可以通过授权文件激活高级功能,如三维分析、网络分析和空间统计。这些工具使得GIS专业人员和非专业用户都能进行复杂的空间分析和数据管理。 3. **ArcSDE**:ArcSDE(Spatial Database Engine)是...
总之,ArcGIS 9.2汉化包为中文用户提供了极大的便利,它不仅解决了语言难题,也提升了用户对GIS技术的掌握程度,进一步推动了GIS在中国的应用和发展。在使用过程中,我们应充分利用这一工具,提升我们的地理信息处理...
在本讨论中,我们将深入探讨“arcgis9.2 系列无限期license”这一主题,以及与之相关的知识点。 1. ArcGIS 9.2的核心组件:ArcGIS 9.2主要包括三个主要组件:ArcMap、ArcCatalog和ArcToolbox。ArcMap用于创建、编辑...
这个名为"ARCGIS9.2.rar_ArcGIS9.2"的压缩包文件,包含了一系列关于使用C#进行ArcGIS 9.2组件开发的资源,旨在帮助开发者深入理解和应用这一技术。 首先,我们要了解ArcGIS的核心组成部分。ArcGIS由多个模块组成,...
在您提供的压缩包中,包含三个许可文件:engine 92.ecp、arcsde 92.ecp 和 arcgis92server.ecp。这些文件分别对应ArcGIS 9.2的不同组件。 1. **Engine 92.ecp**: 这个许可文件是针对ArcGIS Engine的。ArcGIS Engine...
《ArcGIS 9.2 全套安装指南详解》 ArcGIS 9.2是一款由Esri公司推出的地理信息系统(Geographic Information System)软件,它提供了全面的地理数据管理和分析功能,广泛应用于测绘、城市规划、环境研究、灾害管理等...
总的来说,这个“ArcGIS 9.2 License全套”涵盖了ArcGIS三大主要组件的关键授权,对于需要全面使用ArcGIS 9.2的用户来说非常有价值。不过,合法使用和管理许可证是至关重要的,以确保软件的正常运行和持续技术支持。
4. **ArcGIS Engine**:ArcGIS Engine是用于开发GIS桌面和移动应用的组件集,它为开发者提供了丰富的地图显示、数据编辑、分析和打印等功能,可集成到自定义应用中。开发者可以选择Developer Kit进行开发,或者使用...
压缩包中的“arcgis_9.2介绍资料.pdf”很可能是一份全面的ArcGIS 9.2教程,它可能涵盖了软件的基础操作、工作流程、实例演示等内容。而“www.pudn.com.txt”可能是提供其他学习资源的链接,如论坛讨论、扩展教程等。...
Arcgis9.2破解版中文环境,英文不好的朋友可参考使用。
ArcGIS 9.2 DeskTop 破解文件
arcgis9.2软件应用,主要是关于对gis的基本操作的一些指导。
### 地理信息系统软件ArcGIS 9.2的下载与安装指南 #### 一、ArcGIS 9.2概述 ArcGIS是由Esri公司开发的一款功能强大的地理信息系统(GIS)软件,广泛应用于地理数据管理、空间分析以及地图制作等领域。ArcGIS 9.2...
arcgis9.2破解文件 截止到2013-1-1
这个“ArcGIS 9.2全套种子”包含了该版本的全部组件,是学习和工作中的宝贵资源。 1. **arcinfo**:arcinfo是ArcGIS的核心组件,主要用于地理数据的创建、编辑和管理。它支持矢量和栅格数据,提供高级的空间分析...