PIE.NET-SDK组件式二次开发文档
? 一、PIE.Net开发环境及目录说明1.? ?开发环境
2. 【SDK】安装后目录说明1)??????? Bin>>开发包 2)??????? Config>>配置文件 3)??????? Data>>坐标系投影及数据映射表 4)??????? Document>>帮助文件 5)??????? Language>>语言国际化 6)??????? Res>>按钮图标及鼠标Cursor样式 7)??????? Sample>>实例文件 8)??????? Style>>符号库文件 9)??????? Template>>制图模板 二、PIE.NET_SDK二次开发实例? ? ?Tool(工具插件):适用于与地图或制图组件有交互的插件,只需继承自BaseTool(继承自BaseCommand),根据功能需要可重写OnMouseDown、OnMouseMove等方法,如:拉框放大、探针、画多边形等。 ? ? Command(命令插件):与地图无交互,只需继承自BaseCommand,重写OnClick方法,如:全图、居中放大、前一视图等。 1. WinForm插件调用? (1)新建Visual C#的Windows 窗体应用程序,选择新建→项目,选择Visual C #的Windows窗体应用程序,设置.Net Framework4以及工程名称“MapManager”和位置。? ? (2)设置Debug和Release环境,新建选择x86平台。? (3)配置PIE.NET_SDK:在MapManager.csproj的同级目录下新建“APPDebug”文件夹,修改生成输出路径位置为../ APPDebug/Bin。? (4)代码编写A:工具箱里MapControl、TOCControl控件拖拽绑定添加窗体,初始化绑定MapControl、TOCControl控件代码: tocControl1.SetBuddyControl(mapControl1); 窗体运行显示如下: B:选择工程引用,根据自己开发的插件功能需求进行选择,浏览本机已经安装位置的【Bin】目录下添加类库,单击确定即可。C:调用以地图拉框放大(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(); } 2. 插件代码实现? ? 新建插件.cs类以地图拉框放大(Tool)为例 以全图显示(Command)为例 构造函数中的定义可个性化定制,控制实际的显示名称、提示和图片(m_Image),鼠标样式放置在构造函数里设置,如鼠标事件里需要改变鼠标样式,再在鼠标事件里控制即可。 设置Cursor符号cur样式 ? (1)构造函数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)); } ? (2)创建插件对象public override void OnCreate(object hook) { base.OnCreate(hook); m_ActiveView = m_HookHelper.ActiveView; (当前激活视图获取) } ? (3)单击方法public override void OnClick() { if (!this.Enabled) return; } ? (4)鼠标事件? ? 以拉框放大为例:鼠标按下时获取拉框,并给地图设置范围变化、刷新。 /// <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); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |