AE+C#通过多线程向GlobeControl中增加图层
2013-12-05 14:02
357 查看
闲话少说直接将源码贴出
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.Threading;
using System.Collections;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Analyst3D;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.GlobeCore;
namespaceWindowsFormsApplication2
{
publicpartialclassForm1 :
Form
{
//
声明新的进程
privateThread _thread;
//
声明图层文件
privateILayerFile _layerFile;
//
声明进程完成时候的数据
privateeventEventHandler OnNumberClear;
public Form1()
{
InitializeComponent();
}
//执行完成之后,停止所有线程
void ThreadDemo_OnNumberClear(object sender,
EventArgs e)
{
_thread.Abort();
}
privatevoid btnAdd_Click(object
sender, EventArgs e)
{
_layerFile=
newLayerFileClass();
_thread =
newThread(newThreadStart(addLayer));
OnNumberClear +=
newEventHandler(ThreadDemo_OnNumberClear);
addLayerStart();
}
///<summary>
///进程开始
///</summary>
privatevoid addLayerStart()
{
_thread.Start();
}
///<summary>
///进程执行的内容
///</summary>
privatevoid addLayer()
{
//Monitor.Enter(this);//锁定,保持同步
string sFile =
@"D:\CCCache\GlobeCache\Buildings_1CE1FE05-D138-4361-8C50-E3EB26B02858\cache.lyr";
_layerFile.Open(sFile);
ILayer pLayer = _layerFile.Layer;
IGlobeControl pGlobeControl =globeCtrl.Object
asIGlobeControl;
IGlobeDisplayLayers2pGlobeDisplayLayers2 = pGlobeControl.GlobeDisplay
asIGlobeDisplayLayers2;
pLayer.Visible =
true;
//
加载图层到globeCtrl
pGlobeDisplayLayers2.AddLayer(pLayer);
//globeCtrl.GlobeDisplay.Scene.AddLayer(pLayer);
//globeCtrl.GlobeCamera.SetToZoomToExtents(pLayer.AreaOfInterest,globeCtrl.Globe,globeCtrl.GlobeVieweras ISceneViewer);
OnNumberClear(this,newEventArgs());//引发完成事件
//Monitor.Exit(this);//取消锁定
}
}
}
加载前:
![](http://img.blog.csdn.net/20131205140039640?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvU1lEQkM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
加载后:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.Threading;
using System.Collections;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Analyst3D;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.GlobeCore;
namespaceWindowsFormsApplication2
{
publicpartialclassForm1 :
Form
{
//
声明新的进程
privateThread _thread;
//
声明图层文件
privateILayerFile _layerFile;
//
声明进程完成时候的数据
privateeventEventHandler OnNumberClear;
public Form1()
{
InitializeComponent();
}
//执行完成之后,停止所有线程
void ThreadDemo_OnNumberClear(object sender,
EventArgs e)
{
_thread.Abort();
}
privatevoid btnAdd_Click(object
sender, EventArgs e)
{
_layerFile=
newLayerFileClass();
_thread =
newThread(newThreadStart(addLayer));
OnNumberClear +=
newEventHandler(ThreadDemo_OnNumberClear);
addLayerStart();
}
///<summary>
///进程开始
///</summary>
privatevoid addLayerStart()
{
_thread.Start();
}
///<summary>
///进程执行的内容
///</summary>
privatevoid addLayer()
{
//Monitor.Enter(this);//锁定,保持同步
string sFile =
@"D:\CCCache\GlobeCache\Buildings_1CE1FE05-D138-4361-8C50-E3EB26B02858\cache.lyr";
_layerFile.Open(sFile);
ILayer pLayer = _layerFile.Layer;
IGlobeControl pGlobeControl =globeCtrl.Object
asIGlobeControl;
IGlobeDisplayLayers2pGlobeDisplayLayers2 = pGlobeControl.GlobeDisplay
asIGlobeDisplayLayers2;
pLayer.Visible =
true;
//
加载图层到globeCtrl
pGlobeDisplayLayers2.AddLayer(pLayer);
//globeCtrl.GlobeDisplay.Scene.AddLayer(pLayer);
//globeCtrl.GlobeCamera.SetToZoomToExtents(pLayer.AreaOfInterest,globeCtrl.Globe,globeCtrl.GlobeVieweras ISceneViewer);
OnNumberClear(this,newEventArgs());//引发完成事件
//Monitor.Exit(this);//取消锁定
}
}
}
加载前:
加载后:
相关文章推荐
- AE+C# 图层中增加相应属性标注
- GlobeControl中设置图层基本高程--ArcGlobe+C#
- AE+C#通过名称来删除要素类
- C#+AE 展开/收缩图层的图例
- c#+AE开发:通过一个点(坐标)创建点状图层
- C#+AE写的一段加载图层
- (C#)通过多线程为基于 .NET 的应用程序实现响应迅速的用户
- AE+C#通过名称来删除要素类(转)
- AE C# 图片和文本标注(通过查询)
- (C#)通过多线程为基于 .NET 的应用程序实现响应迅速的用户
- AE+C#多个相同类型的图层联合
- AE+C#开发问题之二——axTOCControl控件图层不显示问题
- 修改图层的symbol(AE+C#)
- C#使用多线程实现网络爬虫,并且通过网络传输,传到另外的服务器数据库存储
- 在AE中通过SDE添加图层(转)
- 修改图层的symbol(AE+C#)
- FFMPEG教程4_让程序模块化-增加多线程(使用2014年新SDK重新整理编译通过)
- AE+C# 给图层添加字段
- C# + AE 判断图层类型
- AE+C#向IPageLayout中增加图例框