SimpleGIS
路人甲
路人甲
  • 注册日期2007-03-22
  • 发帖数18
  • QQ389240138
  • 铜币172枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2263回复:4

[原创]我的原创第二贴(自己开发的TOC控件和符号管理器)

楼主#
更多 发布于:2007-04-06 08:42
<P>说明一下:开发环境<FONT color=red>VS.NET2005+ArcEngine9.2</FONT><BR>昨天晚上刚刚写完的,上传一个工程文件.里面有一个TOC控件,可以直接在窗体中使用.还有一个是符号管理器,通过接口可以调用.<BR>ISymbolSelector接口定义打开符号选择器的属性和方法.<BR>    public interface ISymbolSelector<BR>    {<BR>        IStyleGallery StyleGallery { get;set;}       //Style文件的符号集<BR>        void SetObject(object @object);          //传入符号选择器中的符号(目前支持点,线,面,文字,指北针)<BR>        object GetOject();                             //返回的符号对象<BR>        bool DoModal();                                 //打开符号选择器的方法,点击确写按钮时,返回True<BR>    }<BR><BR>SymbolSelector实现ISymbolSelector接口,<BR><BR><BR>通过SymbolEditor可打开符号编辑器窗口,SymbolEditor实现ISymbolEditor接口和IPropertyPageEvents接口<BR>    public interface ISymbolEditor<BR>    {<BR>        bool EditSymbol(object @object);                 //传入符号编辑器的符号对象,当点击确定按钮时,返回True<BR>        IStyleGallery StyleGallery { get;set;}              //Style文件的符号集<BR>        bool ShowUnits { set;}                                //是否显示单位ComboBox控件<BR>        object GetSymbol();                                   //返回的符号对象<BR>        string Title { set;}                                      //符号编辑器的标题<BR>    }<BR><BR>    interface IPropertyPageEvents<BR>    {<BR>        event OnValueChangedEventHandler OnValueChanged;          //符号改变的委托事件<BR>    }<BR><BR><FONT color=red>具体使用的例子:</FONT><BR>       <FONT color=blue>private IStyleGallery m_pStyleGallery = null;<BR>        m_pStyleGallery = new StyleGalleryClass();             //StyleGalleryClass类在Carto.DisplayLib命名空间中</FONT><BR><FONT color=blue>        //=====在此添加符号库文件</FONT><BR><FONT color=blue>        //通过接口转换,得到IStyleGalleryStorage接口<BR>        IStyleGalleryStorage pStyleGalleryStorage = this.m_pStyleGallery as IStyleGalleryStorage;<BR>       //=====pStyleGalleryStorage.AddFile(pStyleGalleryStorage.DefaultStylePath + "forestry.style");<BR>        pStyleGalleryStorage.AddFile(Application.StartupPath + @"\ESRI.style");</FONT><BR><FONT color=blue></FONT><BR><FONT color=blue></FONT><BR><FONT color=blue>            ISymbolSelector pSymbolSelector = new SymbolSelector();<BR>            pSymbolSelector.StyleGallery = this.m_pStyleGallery;<BR>            //该符号库目前支持以下五种符号类型:点,线,面,文字,指北针<BR>            pSymbolSelector.SetObject(new MarkerNorthArrowClass());<BR>            //pSymbolSelector.SetObject(new SimpleMarkerSymbolClass());<BR>            //pSymbolSelector.SetObject(new SimpleLineSymbolClass());<BR>            //pSymbolSelector.SetObject(new SimpleFillSymbolClass());<BR>            //pSymbolSelector.SetObject(new TextSymbolClass());<BR>            if (pSymbolSelector.DoModal())<BR>            {<BR>                object obj = pSymbolSelector.GetOject();<BR>                //GetObject方法返回就是得到的对象,再接口转换一下就得到你要的符号类型了</FONT><BR><FONT color=blue>            }</FONT><BR><BR><FONT color=purple>TOC控件(<FONT color=red>目前仅支持MapControl控件,过几天扩展一下支持PageLayout,Scene,Globe控件</FONT>)使用例子:</FONT><BR><FONT color=purple>     (1)将TocControl类库引入工程,将tableOfContent控件加入窗体(如果加载出错,可能需要将SimpleGIS.dl文件复制到C:\Windows\System32目录下)</FONT><BR><FONT color=purple>     (2)初始化:</FONT><BR><FONT color=purple>             private IMapControl2 m_pMapControl = null;<BR>             m_pMapControl = axMapControl1.Object as IMapControl2;</FONT><BR><FONT color=purple>            tableOfContent1.SetBuddyHook(m_pMapControl);<BR>            tableOfContent1.StyleGallery = this.m_pStyleGallery;<BR>            tableOfContent1.UpdateContents();<BR>     (3)打开地图文档:</FONT><BR><FONT color=purple>            使用我们的TOC控件时,不能使用ArcEngine的LoadMxFile方法,必须按如下方法来使用:</FONT><BR><FONT color=purple>            OpenFileDialog opdMxd = new OpenFileDialog();<BR>            opdMxd.Filter = "地图文档(*.mxd)|*.mxd";<BR>            if (opdMxd.ShowDialog()==DialogResult.OK)<BR>            {<BR>                this.Cursor = Cursors.WaitCursor;<BR>                string sMapName = opdMxd.FileName;<BR>                tableOfContent1.OpenDocument(sMapName);<BR>                this.Cursor = Cursors.Default;<BR>            }</FONT><BR><BR><BR><FONT color=red>两个DLL文件中还提供了其他接口,例如IColorSelector,ColorSelector实现这个接口,专门用于打开颜色对话框,类似于Esri的颜色控件.</FONT><BR><FONT color=red>IColorRampSelector接口定义打开颜色梯度的窗体,</FONT><BR><FONT color=red>更多接口将会不断定义和开发出来,免费使用,希望大家提出一些具体的修改意见,谢谢.</FONT><BR><FONT color=red>以后的开发内容我会在博客公布的,<BR></FONT></P>
<P><FONT color=red>由于不知道怎么上传附件,郁闷,有需要的朋友QQ或MSN联系我,</P></FONT>
喜欢0 评分0
SimpleGIS(简化你的GIS开发工作) ==================== QQ:389240138 http://www.SimpleGIS.com.cn MSN:simplegis@sohu.com Blog:simplegis.blog.sohu.com
whmwxhanshan123
路人甲
路人甲
  • 注册日期2006-06-17
  • 发帖数3108
  • QQ
  • 铜币6445枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2007-04-07 22:12
<FONT color=#ff0000>多多支持!</FONT> 我也需要
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
2楼#
发布于:2007-04-12 12:29
<P>楼主可以把附件发到<a href="mailtgisempire@gmail.com" target="_blank" >gisempire@gmail.com</A></P>
<P>我会传上来</P>
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
SimpleGIS
路人甲
路人甲
  • 注册日期2007-03-22
  • 发帖数18
  • QQ389240138
  • 铜币172枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2007-04-13 12:21
<P>呵,这种方法未免太麻烦了吧,如果这样,那就算了,就准备撤出这个论坛了</P>
SimpleGIS(简化你的GIS开发工作) ==================== QQ:389240138 http://www.SimpleGIS.com.cn MSN:simplegis@sohu.com Blog:simplegis.blog.sohu.com
举报 回复(0) 喜欢(0)     评分
whmwxhanshan123
路人甲
路人甲
  • 注册日期2006-06-17
  • 发帖数3108
  • QQ
  • 铜币6445枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2007-04-13 19:51
诚实守信
举报 回复(0) 喜欢(0)     评分
游客

返回顶部