阅读:1700回复:1
关于TOC图层拖动
<P> 研究了蛮长时间了,参考了坛子里一位仁兄的VB+AO的代码,我用的是C#+AE,现拿出来给出学者共享。</P>
<P>ILayer pSelSymLayer;</P> <P>private void axTOCControl1_OnMouseDown(object sender, ESRI.ArcGIS.TOCControl.ITOCControlEvents_OnMouseDownEvent e)<br> {<br> if(e.button == 1)<br> {<br> esriTOCControlItem pItem = new esriTOCControlItem();</P> <P> IBasicMap pMap = new MapClass(); <br> ILayer pLayer = new FeatureLayerClass(); <br> object other = new object(); <br> object index = new object();<br> ILegendGroup pLegendGroup;<br> pSelSymLayer = null;<br> <br> axTOCControl1.HitTest(e.x, e.y, ref pItem, ref pMap, ref pLayer, ref other, ref index);<br> if(pLayer == null)<br> return;<br> <br> if(pItem == esriTOCControlItem.esriTOCControlItemLayer)<br> {<br> if(pLayer.GetType() is IAnnotationSublayer)return;<br> else<br> {<br> pSelSymLayer = pLayer;<br> } <br> }<br> }</P> <P>}</P> <P>private void axTOCControl1_OnMouseMove(object sender, ESRI.ArcGIS.TOCControl.ITOCControlEvents_OnMouseMoveEvent e)<br> {<br> IBasicMap pMap = new MapClass();<br> ILayer pLayer = new FeatureLayerClass();<br> object pOther = new object();<br> esriTOCControlItem pItem = new esriTOCControlItem();<br> object pIndex = new object(); <br> //实现调整图层顺序功能<br> if(e.button == 1)<br> {<br> axTOCControl1.HitTest(e.x,e.y,ref pItem,ref pMap,ref pLayer,ref pOther,ref pIndex); <br> }<br> if(pItem != esriTOCControlItem.esriTOCControlItemNone)<br> {</P> <P>ESRI.ArcGIS.Utility.COMSupport.OLE.GetIPictureDispFromIcon(icon);<br> axTOCControl1.MousePointer = esriControlsMousePointer.esriPointerCustom;<br> }<br> }</P> <P>private void axTOCControl1_OnMouseUp(object sender, ESRI.ArcGIS.TOCControl.ITOCControlEvents_OnMouseUpEvent e)<br> {<br> esriTOCControlItem pItem = new esriTOCControlItem();<br> IBasicMap pMap = new MapClass(); <br> ILayer pLayer = new FeatureLayerClass(); <br> object pOther = new object();<br> object pIndex = new object();<br> int i,j;<br> bool bUpdataToc;<br> axTOCControl1.MousePointer = esriControlsMousePointer.esriPointerArrow;<br></P> <P> //实现调整图层顺序功能<br> if(e.button == 1)<br> { <br> axTOCControl1.HitTest(e.x, e.y, ref pItem, ref pMap, ref pLayer, ref pOther, ref pIndex);<br> }<br> <br> if(pItem == esriTOCControlItem.esriTOCControlItemLayer||pItem == esriTOCControlItem.esriTOCControlItemLegendClass)<br> {<br> if(pLayer == null||pSelSymLayer == null|| pSelSymLayer == pLayer)<br> return;<br> if(e.button == 1)<br> { <br> for(i = 0;i < pMap.LayerCount;i++)<br> {<br> ILayer pLayTmp;<br> pLayTmp = pMap.get_Layer(i);<br> //得到点击当前的索引值<br> if(pLayer == pLayTmp) continue; <br> } <br> ((IMap)pMap).MoveLayer(pSelSymLayer,i);<br> axMapControl1.ActiveView.Refresh();<br> }<br> }<br> }</P> [此贴子已经被作者于2006-9-27 14:23:15编辑过]
|
|
1楼#
发布于:2006-09-28 09:16
不错!<img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em02.gif" />
|
|
|