1) Bin>>開發包ide
2) Config>>配置文件函數
3) Data>>座標系投影及數據映射表工具
4) Document>>幫助文件this
5) Language>>語言國際化插件
6) Res>>按鈕圖標及鼠標Cursor樣式3d
7) Sample>>實例文件orm
8) Style>>符號庫文件對象
9) Template>>製圖模板blog
Tool(工具插件):適用於與地圖或製圖組件有交互的插件,只需繼承自BaseTool(繼承自BaseCommand),根據功能須要可重寫OnMouseDown、OnMouseMove等方法,如:拉框放大、探針、畫多邊形等。繼承
Command(命令插件):與地圖無交互,只需繼承自BaseCommand,重寫OnClick方法,如:全圖、居中放大、前一視圖等。
添加窗體,初始化綁定MapControl、TOCControl控件代碼:
tocControl1.SetBuddyControl(mapControl1);
窗體運行顯示以下:
以地圖拉框放大(Tool)和全圖(Command)爲例
/// <summary> /// 拉框放大 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void toolStripButton_MapZoomIn_Click(object sender, EventArgs e) { ITool tool = new MapZoomInTool(); ICommand command = tool as ICommand; command.OnCreate(mapControl1); mapControl1.CurrentTool = tool; } /// <summary> /// 全圖 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void toolStripButton_FullExtent_Click(object sender, EventArgs e) { ICommand cmd = new FullExtentCommand(); cmd.OnCreate(mapControl1); cmd.OnClick(); }
以地圖拉框放大(Tool)爲例
以全圖顯示(Command)爲例
構造函數中的定義可個性化定製,控制實際的顯示名稱、提示和圖片(m_Image),鼠標樣式放置在構造函數裏設置,如鼠標事件裏須要改變鼠標樣式,再在鼠標事件裏控制便可。
設置Cursor符號cur樣式
public ZoomIn() { this.Caption = "拉框放大"; (Caption屬性) this.Name = "MapZoomIn"; (名稱) this.ToolTip = "拉框放大地圖"; (提示) this.Checked = false; (插件是否選擇) this.Enabled = false; (插件是否可用) (鼠標樣式在構造函數) this.Cursor = new Cursor(new System.IO.MemoryStream(Properties.Resources.ZoomIn)); }
public override void OnCreate(object hook) { base.OnCreate(hook); m_ActiveView = m_HookHelper.ActiveView; (當前激活視圖獲取) }
public override void OnClick() { if (!this.Enabled) return; }
以拉框放大爲例:鼠標按下時獲取拉框,並給地圖設置範圍變化、刷新。
/// <summary> /// 鼠標按下 /// </summary> /// <param name="sender">觸發對象</param> /// <param name="e">鼠標事件參數</param> public override void OnMouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { if (e.Button != System.Windows.Forms.MouseButtons.Left) return; //判斷左鍵 m_ActiveView.Extent = (m_HookHelper.GetContent() as IMapControl).TrackRectangle(); m_ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll); }