AE+C#通过多线程向GlobeControl中增加图层

闲话少说直接将源码贴出

 

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);//取消锁定

        }

 

    }

}

 

加载前:

 

加载后:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值