|
阅读:1988回复:1
二三维联动工具类【源码+文档】
<p>下载地址:</p>
<p><a href="attachment/2011-11/201111171641431174.rar">2011-11/201111171641431174.rar</a><br/></p> <p> </p> <p> </p> <p>思路:与鹰眼做比较</p> <p>预计可用到的函数,变量等:</p> <p>axSceneControl1.Scene.RecalculateExtent();</p> <p>pEnv = axSceneControl1.Scene.Extent;</p> <p>pEnv=axSceneControl1.SceneGraph.get_OwnerExtent(axSceneControl1, true);</p> <p>是否可用一个MapControl控件做中转控制SceneControl的缩放;</p> <div> <p>关键:找到SceneControl控件的缩放事件;SceneControl的可读写Extext的包络线属性</p></div> <p><br/> </p> <p>已解决: 可以在工具的OnCreate()方法里将ArrayList类型的对对象传出来,ArrayList里存放的是mapcontrol.object,scenecontrol.object,</p> <div> <p>public override void OnCreate(object hook)<br/> {<br/> try<br/> {<br/> m_hookHelper = new HookHelperClass();<br/> m_SceneHookHelper = new SceneHookHelperClass();<br/> //m_hookHelper.Hook = hook;<br/><br/> ArrayList arrControls = hook as ArrayList;<br/> m_hookHelper.Hook = arrControls[0] as object;<br/> m_SceneHookHelper.Hook = arrControls[1] as object;<br/><br/> if (m_hookHelper.ActiveView == null)<br/> {<br/> m_hookHelper = null;<br/> }<br/> }<br/> catch<br/> {<br/> m_hookHelper = null;<br/> }<br/><br/> if (m_hookHelper == null)<br/> base.m_enabled = false;<br/> else<br/> base.m_enabled = true;<br/><br/> // TODO: Add other initialization code<br/> }<br/><br/>调用Tool的代码<br/><br/> ArrayList arrControls = new ArrayList();<br/> arrControls.Add(m_mapControl.Object);<br/> arrControls.Add(m_sceneControl.Object);<br/><br/> ICommand pCmd = new MyCustomTool();<br/> pCmd.OnCreate(arrControls as object);<br/> m_mapControl.CurrentTool = pCmd as ITool;</p></div> <p><br/>功能:移动二维视图,三维视图随之移动,反之也可!原理相同!</p> <p>问题:</p> <p>1 二维平移是否与三维飞行联系起来</p> <p>2 二三维同步缩放的比例把握未解决,并且功能还不完善</p> |
|
|
|
1楼#
发布于:2011-12-08 15:37
好东西 谢谢楼主
|
|