惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Threat Research - Cisco Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
V
Vulnerabilities – Threatpost
GbyAI
GbyAI
P
Proofpoint News Feed
L
LINUX DO - 热门话题
P
Palo Alto Networks Blog
A
About on SuperTechFans
T
Tenable Blog
M
MIT News - Artificial intelligence
IT之家
IT之家
I
Intezer
D
DataBreaches.Net
爱范儿
爱范儿
T
Threatpost
C
CERT Recently Published Vulnerability Notes
云风的 BLOG
云风的 BLOG
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
K
Kaspersky official blog
大猫的无限游戏
大猫的无限游戏
A
Arctic Wolf
Y
Y Combinator Blog
Cyberwarzone
Cyberwarzone
酷 壳 – CoolShell
酷 壳 – CoolShell
D
Darknet – Hacking Tools, Hacker News & Cyber Security
H
Help Net Security
Microsoft Security Blog
Microsoft Security Blog
Spread Privacy
Spread Privacy
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
AWS News Blog
AWS News Blog
博客园 - 聂微东
C
Check Point Blog
S
Securelist
有赞技术团队
有赞技术团队
雷峰网
雷峰网
aimingoo的专栏
aimingoo的专栏
Last Week in AI
Last Week in AI
Stack Overflow Blog
Stack Overflow Blog
MongoDB | Blog
MongoDB | Blog
D
Docker
G
GRAHAM CLULEY
T
The Exploit Database - CXSecurity.com
C
Cybersecurity and Infrastructure Security Agency CISA
T
Tailwind CSS Blog
L
Lohrmann on Cybersecurity
G
Google Developers Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
L
LangChain Blog

博客园 - 看风者

2005年的最后一天,2006年的第一场雪 Web Parts, Impersonate and Security Policy BS开发中常用的javascript技术 INF文件是什么 INF探索 客户端回调 xmlHTTP技术 SPS下的session不能用 [转] 通过ASP.net程序创建域帐户故障 C# 程序员参考--COM Interop 第一部分:C# 客户端教程 SPS服务器上出现的奇怪问题? Response.ContentType :控制输出的文件类型 C#里有没有操作AD的类? VB.NET和C#的比较 在ASP.NET页面中实现数据棒图 暗算 之 看风 Session丢失网友回答集锦 问题征解3:SQL SERVER的性能问题 问题征解2:SPS与AD(活动目录)结合带来的系统安全性问题
C#+ArcEngine问题小结(一)
看风者 · 2007-11-13 · via 博客园 - 看风者

1、MapControl的CurrentTool=null不起作用:
   在VB中使用MapControl.CurrentTool=nothing即可,而使用C#就不灵了。解决办法如下所示,先做一转换即可。
    IMapControl2 pMainMap2=(IMapControl2)axMapMain.Object;
    pMainMap2.CurrentTool=null;

2、TocControl的HitTest不起作用:
该问题与上一问题类似,做以下处理
   ITOCControl pTOCControl = (ITOCControl)axTOCCtrl.Object;
   pTOCControl.HitTest(e.x, e.y, ref item, ref map, ref layer, ref other, ref index);

3、通过TocControl 控件的事件调换图层:

  ILayer pMoveLayer; 
  int iToLayerIndex;
  private void axTOCCtrl_OnMouseDown(object sender, AxESRI.ArcGIS.TOCControl.ITOCControlEvents_OnMouseDownEvent e){
   esriTOCControlItem item = esriTOCControlItem.esriTOCControlItemNone;
   IBasicMap map = null;
   ILayer layer = null;
   object other = null;
   object index = null;
   ITOCControl pTOCControl = (ITOCControl)axTOCCtrl.Object;
   pTOCControl.HitTest(e.x, e.y, ref item, ref map, ref layer, ref other, ref index);
   axMapMain.CustomProperty = layer;
   if(e.button==1){
    if(item==esriTOCControlItem.esriTOCControlItemLayer){
     if(layer is IAnnotationSublayer) {
      return;
     }
     else {
      pMoveLayer=layer;
     }
     axTOCCtrl.MousePointer=esriControlsMousePointer.esriPointerHotLink;
    }
   }

  }

  private void axTOCCtrl_OnMouseUp(object sender, AxESRI.ArcGIS.TOCControl.ITOCControlEvents_OnMouseUpEvent e){
   if(e.button==1)  {
    esriTOCControlItem item = esriTOCControlItem.esriTOCControlItemNone;
    IBasicMap map = null;
    ILayer layer = null;
    object other = null;
    object index = null;  
    ITOCControl pTOCControl = (ITOCControl)axTOCCtrl.Object;
    pTOCControl.HitTest(e.x, e.y, ref item, ref map, ref layer, ref other, ref index); 
    axMapMain.CustomProperty = layer;
    IMap pMap=axMapMain.ActiveView.FocusMap;
    if(item == esriTOCControlItem.esriTOCControlItemLayer || layer!=null) {
     if(pMoveLayer!=layer) {
      ILayer pTempLayer;
     
      for(int i=0;i<pMap.LayerCount;i++)  {
       pTempLayer=pMap.get_Layer(i);
       if(pTempLayer==layer) {
        iToLayerIndex=i;
       }

      }
      pMap.MoveLayer(pMoveLayer,iToLayerIndex);
      axMapMain.ActiveView.Refresh();
     }
    }
    axTOCCtrl.MousePointer=esriControlsMousePointer.esriPointerArrow;
   }  
  }

4、鹰眼的实现
  private void drawMapEagleRect(IMap pMap, int iRed, int iGreen, int iBlue, int iWidth, object newEnvelope){
   IEnvelope pNewMainEnv = (IEnvelope)newEnvelope;

   IGraphicsContainer pGraphCon = pMap as IGraphicsContainer;
   IActiveView pActiveView = pGraphCon as IActiveView;
   pGraphCon.DeleteAllElements();
   //
   IRectangleElement pRectEle = new RectangleElementClass();
   IElement pEle = pRectEle as IElement;
   pEle.Geometry =pNewMainEnv;
   //
   IRgbColor pColor = new RgbColorClass();
   pColor.Red = iRed;
   pColor.Green = iGreen;
   pColor.Blue =iBlue;
   pColor.Transparency = (byte)iRed;
   //
   ILineSymbol pOutline = new SimpleLineSymbolClass();
   pOutline.Width = iWidth;
   pOutline.Color = pColor;
   //
   pColor = new RgbColorClass();
   pColor.Red = iRed;
   pColor.Green = iGreen;
   pColor.Blue = iBlue;
   pColor.Transparency = 0;
   //
   IFillSymbol pFillSymbol = new SimpleFillSymbolClass();
   pFillSymbol.Color = pColor;
   pFillSymbol.Outline = pOutline;

   IFillShapeElement pFillShapeEle = pEle as IFillShapeElement;
   pFillShapeEle.Symbol = pFillSymbol;

   pGraphCon.AddElement((IElement)pFillShapeEle, 0);

   pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);    
  } 

  private void axMapMain_OnMapReplaced(object sender, AxESRI.ArcGIS.MapControl.IMapControlEvents2_OnMapReplacedEvent e) {
   if(!axMapMain.DocumentFilename.Equals("")){
    axMapEagle.LoadMxFile(axMapMain.DocumentFilename);
    axMapEagle.Extent=axMapEagle.FullExtent;
    drawMapEagleRect(axMapEagle.Map,255,0,0,1,axMapMain.Extent.Envelope);
   }
  }

  private void axMapEagle_OnMouseDown(object sender, AxESRI.ArcGIS.MapControl.IMapControlEvents2_OnMouseDownEvent e) {
   IPoint pPoint=new PointClass();
   pPoint.PutCoords(e.mapX,e.mapY);
   axMapMain.CenterAt(pPoint);
  }

T.B.D.