ArcGlobe组件开发之书签

关于书签,主要实现创建书签,缩放至书签等功能。相关接口:ISceneBookmarks2 和IBookmark3D,实现过程很简单,代码如下:

  创建书签源码:

 public partial class CreateBookMark:DevComponents.DotNetBar.Office2007Form
    {
        public IGlobeControl m_globecontrol = null;

        public CreateBookMark (IGlobeControl globecontrol)   
        {
            this.m_globecontrol = globecontrol;
            InitializeComponent();
        }
        //创建书签
        private void buttonX_Create_Click (object sender,EventArgs e)
        {
             if (textBox_BookMarkName.Text=="")
             {
                 MessageBox.Show("请输入书签名!");
             } 
             else
             {
                 ISceneBookmarks pBookmarks = m_globecontrol.Globe.GlobeDisplay.Scene as ISceneBookmarks;
                 IBookmark3D pBookmark3D = new Bookmark3DClass();
                 pBookmark3D.Name = textBox_BookMarkName.Text;
                 pBookmark3D.Capture(m_globecontrol.Globe.GlobeDisplay.ActiveViewer.Camera);
                 pBookmarks.AddBookmark(pBookmark3D);

                 this.Close();
                 this.Dispose();
             }

        }
        private void buttonX_cancle_Click (object sender,EventArgs e)
        {
            this.Close();
            this.Dispose();
        }

    }

书签管理器代码:

  public partial class BookmarkManager:DevComponents.DotNetBar.Office2007Form
    {
        //类成员
        private IGlobeControl m_globecontrol = null;
        private IArray m_BookmarkArray = null;
        private string m_bookmarkName = "";
       
        //构造函数
        public BookmarkManager (IGlobeControl globecontrol)
        {
            this.m_globecontrol = globecontrol;
            InitializeComponent();
        }
       
        //load
        private void BookmarkManager_Load (object sender,EventArgs e)
        {
            ISceneBookmarks2 sceneBookmarks = m_globecontrol.Globe as ISceneBookmarks2;
            m_BookmarkArray = sceneBookmarks.Bookmarks;
            for(int i = 0;i < sceneBookmarks.BookmarkCount;i++)
            {
                IBookmark3D pBookmark = new Bookmark3DClass();
                pBookmark = m_BookmarkArray.get_Element(i) as IBookmark3D;
                listBox_Bookmarks.Items.Add(pBookmark.Name);

            }

        }
         //创建书签
        private void button_CreateBookmark_Click (object sender,EventArgs e)
        {
            CreateBookMark createBookMark = new CreateBookMark(m_globecontrol);
            createBookMark.ShowDialog();
        }
        //选中书签
        private void listBox_Bookmarks_SelectedIndexChanged (object sender,EventArgs e)
        {
            m_bookmarkName = listBox_Bookmarks.Items[listBox_Bookmarks.SelectedIndex].ToString();
        }
        //删除书签
        private void buttonX_remove_Click (object sender,EventArgs e)
        {
            ISceneBookmarks2 sceneBookmarks = m_globecontrol.Globe as ISceneBookmarks2;
            IBookmark3D bookmark3D = null;
            sceneBookmarks.FindBookmark(m_bookmarkName,out bookmark3D);
            if (bookmark3D!=null)
            {
                sceneBookmarks.RemoveBookmark(bookmark3D);
                listBox_Bookmarks.Items.Remove(this.listBox_Bookmarks.SelectedIndex);
            }
        }
        //缩放至
        private void button_Zoom2Bookmark_Click (object sender,EventArgs e)
        {
            ISceneBookmarks2 sceneBookmarks = m_globecontrol.Globe as ISceneBookmarks2;
            IBookmark3D bookmark3D = null;
            sceneBookmarks.FindBookmark(m_bookmarkName,out bookmark3D);
            if (bookmark3D!=null)
            {
                bookmark3D.Apply(m_globecontrol.GlobeDisplay.ActiveViewer,true,0);
                m_globecontrol.GlobeDisplay.RefreshViewers();
            }
            
        }

        private void buttonX_close_Click (object sender,EventArgs e)
        {
            this.Close();
            this.Dispose();
        }
    }


转载于:https://www.cnblogs.com/giser-whu/p/3707054.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值