连载-基于插件技术的GIS应用框架(C# + ArcEngine9.3)(三)

问题描述

[align=center]基于插件技术的GIS应用框架(C#+ArcEngine9.3)(三)-------------------------插件的分类[/align]我们在进行GIS框架的开发时,有个问题必须先得明确下来,这就是你的插件具体有哪些表现形式,这直接关系到你的框架接口的设计、插件的加载及保存。具体一点,就是说,你的界面上将会出现哪些UI元素,如何进行管理。例如:Combobox、Edit、MenuItem诸如此类的插件。看过一些文章,大都具有子菜单的菜单项和工具栏都当做插件来处理,在本文论及的框架中,没有此类插件,但却同样做到了统一加载,统一管理。一、命令插件IAxCommand接口定义:publicinterfaceIAxCommand:PluginEngine.Interface.IAxPlugin{}这个接口没有任何属性方法,实际上加载到本文框架中的命令插件和工具插件必须分别实现esriSystemUI.ICommand接口和esriSystemUI.ITool接口,这里声明IAxCommand接口只是为了方便插件池对象对所有命令和工具进行管理而已,后面会有所提及。二、工具插件IAxTool接口定义:publicinterfaceIAxTool:PluginEngine.Interface.IAxPlugin{IPointSnappedPoint{get;}//捕捉到的点}大家可以发现,这个接口只有一个属性,实际上,在本文框架中,为了改变ArcMap那种只有草图工具可以进行捕捉的尴尬,对于捕捉的环境、捕捉代理的代码全由自己实现,这样一来,对于想要进行捕捉的其他ITool接口实现类,只要同时实现IAxTool接口就能进行捕捉了。三、列表框插件IAxCombobox接口定义:///下拉列表插件接口publicinterfaceIAxCombobox:PluginEngine.Interface.IAxPlugin{///下拉列表的名称stringName{get;}///下拉列表的标题stringCaption{get;}///是否显示标题boolShowCaption{get;}///下拉列表的ItemsSystem.Collections.ICollectionItems{get;}///下拉列表的文字stringText{get;}///下拉列表的类别stringCategory{get;}///下拉列表是否可用boolEnabled{get;}///下拉列表是否可编辑boolEditable{get;}///下拉列表的宽度intWidth{get;}///下拉列表下拉的最大行数intDropDownRows{get;}///提示文字stringTooltip{get;}///出现在状态栏的消息文字stringMessage{get;}///KeyPress事件voidOnKeyPress();///KeyDown事件voidOnKeyDown();///EditValueChanged事件voidEditValueChanged(stringnewText);///列表创建时触发的方法///<paramname="hook">框架对象</param>voidOnCreate(IAxApplicationhook);}对于一个下拉列表类型的插件,我们只需要定义上面这些属性和方法、事件差不多就够了,后续章节中,我就针对编辑任务列表这个下拉列表插件做详细介绍。四、编辑框插件IAxEdit接口定义:publicinterfaceIAxEdit:PluginEngine.Interface.IAxPlugin{///编辑框的名称stringName{get;}///编辑框的标题stringCaption{get;}///是否显示标题boolShowCaption{get;}///编辑框的文字stringText{get;}///编辑框的类别stringCategory{get;}///编辑框是否可用boolEnabled{get;}///编辑框是否只读boolReadOnly{get;}///编辑框的宽度intWidth{get;}stringTooltip{get;}///状态栏消息stringMessage{get;}///KeyPress事件voidOnKeyPress();///KeyDown事件voidOnKeyDown();///编辑框创建时触发的方法///<paramname="hook">框架的对象</param>voidOnCreate(IAxApplicationhook);}定义这个插件接口,可以显示诸如地图比例尺信息等。五、菜单组插件IAxSubItem接口定义:publicinterfaceIAxSubItem:PluginEngine.Interface.IAxPlugin{///子菜单的文字stringCaption{get;}///子菜单所属的类别stringCategory{get;}///子菜单名称stringName{get;}///子菜单宽度intWidth{get;}///子菜单产生是触发的方法///<paramname="hook">框架对象</param>intVisible{get;}//-1-Never,0-OnlyInCustomizing,1-AlwaysvoidOnCreate(IAxApplicationhook);}IAxSubItem这个接口实际上是个容器接口,在最终加载这个插件的时候,寄宿于其之上的其他插件对象都通过XML配置文件有所记录。六、视图插件IAxContentsView接口定义:publicinterfaceIAxContentsView:PluginEngine.Interface.IAxPlugin{///位图intBitmap{get;}///句柄inthWnd{get;}///名称stringName{get;}///标题stringCaption{get;}///子控件System.Windows.Forms.ControlObjecthWnd{get;}///是否可见boolVisible{get;set;}///视图的页号intIndex{get;set;}///视图当前选择的对象objectSelectedItem{get;}///OnCreatevoidOnCreate(IAxApplicationhook);///RefreshvoidRefresh();}视图插件其实就类似于C#组件TabControl里的一个页对象,TOC视图就可以实现这个接口从而加载到框架里来。七、停靠窗体插件IAxDockableWindow接口定义///停靠窗体接口publicinterfaceIAxDockableWindowDef:PluginEngine.Interface.IAxPlugin{///标题stringCaption{get;}///停靠窗体对象句柄System.Windows.Forms.ControlObjecthWnd{get;}///名称stringName{get;}///默认停靠位置DevExpress.XtraBars.Docking.DockingStyleDefaultDock{get;}///构建方法///<paramname="hook"></param>voidOnCreate(IAxApplicationhook);///OnDestoryvoidOnDestory();}八、颜色编辑框插件IAxColorPicker接口定义:///颜色提取器插件接口publicinterfaceIAxColorPicker:PluginEngine.Interface.IAxPlugin{///位图intBitmap{get;}///颜色提取器的名称stringName{get;}///颜色提取器的标题stringCaption{get;}///是否显示标题boolShowCaption{get;}///颜色提取器的类别stringCategory{get;}///颜色提取器是否可用boolEnabled{get;}///颜色提取器的宽度intWidth{get;}///提示文字stringTooltip{get;}///状态栏消息stringMessage{get;}///EditValueChanged事件voidEditValueChanged(stringnewText);///颜色提取器创建时触发的方法///<paramname="hook">框架对象</param>voidOnCreate(IAxApplicationhook);}

解决方案

解决方案二:
品尝中
解决方案三:
可惜我没分了,其他的部分请去博客看吧http://blog.csdn.net/njjonathan/archive/2010/08/04/5787122.aspx

时间: 2024-09-16 08:37:17

连载-基于插件技术的GIS应用框架(C# + ArcEngine9.3)(三)的相关文章

连载-基于插件技术的GIS应用框架(C# + ArcEngine9.3)(五)

问题描述 [align=center]基于插件技术的GIS应用框架(C#+ArcEngine9.3)(五)--------------------------插件初始化(1)[/align]在第四节中,我们论及了插件的XML保存格式,对于各个XML节点的属性也有了一个大概的了解,下面,我们就如何利用DevExpress套件就这些插件的加载进行详细的剖析.首先,我们必须从已经编译好的DLL中获取插件的类型信息,这就需要利用C#所提供的反射机制.一.插件的反射///根据反射机制产生插件对象并将其放入

连载-基于插件技术的GIS应用框架(C# + ArcEngine9.3)(四)

问题描述 基于插件技术的GIS应用框架(C#+ArcEngine9.3)(四)-------------------------插件配置文件插件的配置.保存是GIS应用框架的一个重要内容,前述章节,我们介绍了本文框架中插件的保存是以XML来实现的,下面,我们就一个XML实例来说明插件是如何保存的.本文框架插件配置文件如下例:[img=http://static4.photo.sina.com.cn/middle/4c0b48dcgd7db06b5dd13&690][/img]从上面的插件配置文件

连载-基于插件技术的GIS应用框架(C# + ArcEngine9.3)(二)

问题描述 [align=center]基于插件技术的GIS应用框架(C#+ArcEngine9.3)(二)-------------------------开发环境配置[/align]选用什么样的第三方组件库来进行插件的封装是开发GIS框架的一个重要问题,直接影响到你框架容器加载插件的方式和插件对象的管理机制:此外开发平台的选择也需要考虑,但是选择有很多种,本文论及的框架开发环境配置如下:一.VisualStudio2008个人觉得比VisualStudio2005运行稳定.二.ArcEngin

基于AJAX技术实现Struts校验框架

ajax 提要 实时的数据校验是AJAX技术的重要优点之一,Struts校验框架通过加入这种技术进一步丰富了其MVC,从而使得Web应用程序的开发效果更接近于桌面应用程序. 一. 引言 校验框架的根本目的是实现域校验.在Web应用程序中有许多方法可以实现域校验,总体上可以分为两类:服务器端和客户端.其中,Struts校验框架是适合于基于Java的Web应用程序环境最好的框架之一.它可以使用服务器端校验来配置应用程序并且使用在校验过程(在请求处理期间激活)中生成的错误消息:而且它也可以通过在请求页

Partysip的插件技术研究

Partysip的插件技术研究之Partysip框架优化方案   介绍:        本文是<Partysip框架优化计划>的一部分,着重研究Partysip插件技术,并在此基础上尝试优化.        整体上说Partysip虽然没有使用OO的思想去设计,但是还是尽量"封装"独立的函数操作,所以研究和理解还是比较方便,对于每个声明结构体都会有一组相关的函数对其操作,这些操作大部分是名字上的差异,其执行操作是对结构体内变量赋值,修改操作,以及结构体的init和free操

基于中间件技术的多层分布式系统的研究

1 引言 分布式系统的信息处理分布在许多计算机上而不是局限在单一机器上.目前一般类型的分布式系统体系结构可以分为两种.一种是客户机 / 服务器( C/S )体系结构,它由客户端提供用户界面.运行逻辑处理应用,而服务器接受客户端 SQL 语句并对数据库进行查询,然后返回查询结果.C/S 结构曾给人们带来许多便利,但随着业务处理对系统提出更高要求以后,它也逐渐暴露出其客户端逐渐庞大和服务器负担过重的缺点,如灵活可扩展的工作流定制.保证数据在网络传输的稳定性和准确性.应付峰值数据的高负荷处理和平衡负载

DockOne微信分享(七十九):基于容器技术构建企业级PaaS云平台实践

本文讲的是DockOne微信分享(七十九):基于容器技术构建企业级PaaS云平台实践[编者的话]企业级容器化PaaS平台旨在为企业应用提供底层支撑能力,覆盖应用开发.应用交付.上线运维等环节,包括代码的管理.持续集成.自动化测试.交付物管理.应用托管.中间件服务.自动化运维.监控报警.日志处理等,本次分享主要介绍基于容器技术构建PaaS平台所采用的相关技术.涉及的核心功能模块以及相关方案. 为满足以上需求,MoPaaS企业版基于Cloud Foundry及Kubernetes等开源技术框架和智能

基于DeepZoom技术的Bing Maps客户端实现研究

目前基于Silverlight技术的Web GIS客户端实现,包括微软Bing Maps Silverlight Control,以及开源的Web GIS客户端组件DeepEarth 项目,核心都是采用Silverlight中的DeepZoom技术实现.可能您已经知道 DeepZoom技术以MultiScaleImage控件为核心,其内部有一个 MultiScaleTileSource类型的源属性,主要用于设置 MultiScaleImage控件所要呈现的数据源,可以通过学习Deep Zoom

腾讯开源基于HTML5技术的专业级图像处理引擎 AlloyImage

腾讯开源基于http://www.aliyun.com/zixun/aggregation/33875.html">HTML5技术的专业级图像处理引擎 Alloy Image 发表于16小时前| 次阅读| 来源CSDN| 0 条评论| 作者张红月 腾讯AlloyTeamAlloyImageAlloyPhotoGitHub开源HTML5 摘要:近日,腾讯 Web前端团队AlloyTeam推出了最 新的开源项目:一个基于HTML5技术的专业级图像处理引擎--AlloyImage(简称AI),以