始祖鸟
路人甲
路人甲
  • 注册日期2004-08-02
  • 发帖数37
  • QQ
  • 铜币203枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1700回复:1

关于TOC图层拖动

楼主#
更多 发布于:2006-09-26 22:11
<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编辑过]
喜欢0 评分0
hsghxm
路人甲
路人甲
  • 注册日期2004-10-27
  • 发帖数517
  • QQ4604052
  • 铜币1枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2006-09-28 09:16
不错!<img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em02.gif" />
MSN:hsghxm@163.com QQ:4604052 (很少用,最好别加) Email:hsghxm@163.com 我的BOLG:http://www.gisempire.com/blog/user1/864/index.htm
举报 回复(0) 喜欢(0)     评分
游客

返回顶部