ArcGIS Engine代码共享-不同格式数据打开,对象创建,导入导出
http://www.52php.cn/article/p-rueapbes-eq.html
ArcGIS Engine代码共享-颜色(Color)对象函数
http://www.52php.cn/article/p-ddxovter-eq.html
ArcGIS Engine代码共享-要素(Feature)操作
http://www.52php.cn/article/p-txxhyekx-eq.html
ArcGIS Engine代码共享-字段(Field)操作
http://www.52php.cn/article/p-edxwgluv-eq.html
ArcGIS Engine代码共享-图层(Layer)操作
http://www.52php.cn/article/p-cacshsla-eq.html
ArcGIS Engine代码共享-投影(SpatialReference)对象操作
http://www.52php.cn/article/p-djhileib-eq.html
ArcGIS Engine代码共享-符号(Symbol)对象操作
http://www.52php.cn/article/p-zdcterii-eq.html
ArcGIS Engine代码共享-工作空间(workspace)对象操作
http://www.52php.cn/article/p-dkmpfory-eq.html
IFeatureClass.Search(IQuery Filter,bool Recycling)参数说明
用户自定义动态电力符号(C#)
图形操作函数
将symbologycontrol中选中的symbol或对象转化为图像(VB.Net)
空间运算
Geometry相关函数(VB.NET)
修改图层的symbol(C#)
ArcGIS Engine开发系列:将地图导出为图片的两种方法
ArcGIS Engine自定义工具类,实现添加图名,比例尺,指北针等。 自定义工具类,实现添加图名,比例尺,指北针
-------------------------添加图名------------------------------ using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using ESRI.ArcGIS.Display; using ESRI.ArcGIS.SystemUI; using ESRI.ArcGIS.Carto; using ESRI.ArcGIS.esriSystem; using ESRI.ArcGIS.Output; using ESRI.ArcGIS.Controls; using ESRI.ArcGIS.Geometry; using ESRI.ArcGIS.ADF.BaseClasses; using stdole; //自定义工具类,实现添加图名功能 namespace WindowsApplication1 {
class addPageLayoutName:BaseTool { public Form1 formTemp; TextBox textbox; AxPageLayoutControl axLayoutControl; IPoint pPoint; //double xMap,yMap; public static double xMap; public static double yMap;
public override void OnMouseDown(int Button,int Shift,int X,int Y) { if (Button==1) { pPoint = formTemp.returnPageLayoutControl().ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X,Y); xMap = pPoint.X; yMap = pPoint.Y; formTemp.returnTextbox1().Location = new System.Drawing.Point(X,Y); formTemp.returnTextbox1().Visible = true; formTemp.returnTextbox1().Focus(); formTemp.returnTextbox1().Text = "请在此输入图名";
}
}
public override void OnCreate(object hook) { axLayoutControl = hook as AxPageLayoutControl; }
public void AddTextElement(AxPageLayoutControl PageLayoutControl,double x,double y,string textName) { IPageLayout pPageLayout; IActiveView pAV; IGraphicsContainer pGraphicsContainer; IPoint pPoint; ITextElement pTextElement; IElement pElement; ITextSymbol pTextSymbol; IRgbColor pColor; pPageLayout = PageLayoutControl.PageLayout; pAV = (IActiveView)pPageLayout; pGraphicsContainer = (IGraphicsContainer)pPageLayout; pTextElement = new TextElementClass();
IFontDisp pFont = new StdFontClass() as IFontDisp; pFont.Bold = true; pFont.Name = "宋体"; pFont.Size = 13;
pColor = new RgbColorClass(); pColor.Red = 255;
pTextSymbol = new TextSymbolClass(); pTextSymbol.Color = (IColor)pColor; pTextSymbol.Font = pFont;
pTextElement.Text = textName; pTextElement.Symbol = pTextSymbol;
pPoint = new PointClass(); pPoint.X = x; pPoint.Y = y;
pElement = (IElement)pTextElement; pElement.Geometry = (IGeometry)pPoint; pGraphicsContainer.AddElement(pElement,0);
pAV.PartialRefresh(esriViewDrawPhase.esriViewGraphics,null,null);
} } 另外附加其它(添加比例尺,指北针的代码,,,也是通过自定义工具类实现的,,,,下列只给出自定义工具类的代码!) ---------------------------------------添加指北针------------------------------------------- using System; using System.Collections.Generic; using System.Text; using ESRI.ArcGIS.Carto; using ESRI.ArcGIS.Controls; using ESRI.ArcGIS.Display; using ESRI.ArcGIS.Geometry; using ESRI.ArcGIS.ADF.BaseClasses; namespace WindowsApplication1 { sealed class addNorthArrow : BaseTool { AxPageLayoutControl axPageLayout=null; IPoint pPoint; bool bInuse; INewEnvelopeFeedback pNewEnvelopeFeedback = null;
public addNorthArrow() { base.m_caption= "添加指北针"; base.m_toolTip = "添加指北针"; base.m_category = "customCommands"; base.m_message = "添加指北针"; base.m_deactivate = true;
public override void OnCreate(object hook) { axPageLayout = (AxPageLayoutControl)hook;
} public override void OnMouseDown(int Button,int Y) { pPoint = axPageLayout.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X,Y); bInuse = true; } public override void OnMouseMove(int Button,int Y) { if (bInuse==false) { return; }
if (pNewEnvelopeFeedback==null) { pNewEnvelopeFeedback = new NewEnvelopeFeedbackClass(); pNewEnvelopeFeedback.Display = axPageLayout.ActiveView.ScreenDisplay; pNewEnvelopeFeedback.Start(pPoint); } pNewEnvelopeFeedback.MoveTo(axPageLayout.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X,Y));
} public override void OnMouseUp(int Button,int Y) { if (bInuse==false) { return; } if (pNewEnvelopeFeedback==null) { pNewEnvelopeFeedback = null; bInuse = false; return; } IEnvelope pEnvelope=pNewEnvelopeFeedback.Stop(); if((pEnvelope.IsEmpty)||(pEnvelope.Width==0)||(pEnvelope.Height==0)) { pNewEnvelopeFeedback = null; bInuse = false; return; }
addNorthArrowForm northArrow = new addNorthArrowForm(); IStyleGalleryItem pStyleGalleryItemTemp = Form1.pStyleGalleryItem; if (pStyleGalleryItemTemp==null) { return; }
IMapFrame pMapframe = axPageLayout.ActiveView.GraphicsContainer.FindFrame(axPageLayout.ActiveView.FocusMap)as IMapFrame; IMapSurroundFrame pMapSurroundFrame = new MapSurroundFrameClass(); pMapSurroundFrame.MapFrame = pMapframe; pMapSurroundFrame.MapSurround = (IMapSurround)pStyleGalleryItemTemp.Item; //在pageLayout中根据名称查要Element,找到之后删除已经存在的指北针 IElement pElement = axPageLayout.FindElementByName("NorthArrows"); if (pElement!=null) { axPageLayout.ActiveView.GraphicsContainer.DeleteElement(pElement); //删除已经存在的指北针 }
pElement = (IElement)pMapSurroundFrame; pElement.Geometry = (IGeometry)pEnvelope;
axPageLayout.ActiveView.GraphicsContainer.AddElement(pElement,0); axPageLayout.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics,sans-serif"> pNewEnvelopeFeedback = null; bInuse = false; }
} }
----------------------------------------添加比例尺(Scale Bars)----------------------------------- using System; using System.Collections.Generic; using System.Text; using ESRI.ArcGIS.Carto; using ESRI.ArcGIS.Controls; using ESRI.ArcGIS.Display; using ESRI.ArcGIS.Geometry; using ESRI.ArcGIS.ADF.BaseClasses; namespace WindowsApplication1 { sealed class addScaleBar:BaseTool { //----------------------------------------------------------
//发现的重大问题,如果用IHookHelper,就会出现问题,用AxPageLayoutControl则不会出现问题,以后注意 //private IHookHelper pHookHelper=null; private AxPageLayoutControl axPagelayoutControl = null;
private IPoint pPoint; private INewEnvelopeFeedback pNewEnvelopeFeedback; private bool bInuse;
public addScaleBar() { base.m_caption = "ScaleBar"; base.m_category = "myCustomCommands(C#)"; base.m_message = "Add a scale bar map surround"; base.m_name = "myCustomCommands(C#)_ScaleBar"; base.m_toolTip = "Add a scale bar"; base.m_deactivate = true;
} public override void OnCreate(object hook) { //pHookHelper.Hook = hook; axPagelayoutControl = hook as AxPageLayoutControl; } public override void OnMouseDown(int Button,int Y) { pPoint = axPagelayoutControl.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X,Y); bInuse = true; }
public override void OnMouseMove(int Button,int Y) { if (bInuse==false) { return; } if (pNewEnvelopeFeedback==null) { pNewEnvelopeFeedback = new NewEnvelopeFeedbackClass(); pNewEnvelopeFeedback.Display = axPagelayoutControl.ActiveView.ScreenDisplay; pNewEnvelopeFeedback.Start(pPoint); } pNewEnvelopeFeedback.MoveTo(axPagelayoutControl.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X,sans-serif"> }
public override void OnMouseUp(int Button,int Y) { if (bInuse==false) { return; } if (pNewEnvelopeFeedback==null) { pNewEnvelopeFeedback = null; bInuse = false; return; } IEnvelope pEnvelope = pNewEnvelopeFeedback.Stop(); if ((pEnvelope.IsEmpty)||(pEnvelope.Width==0)||(pEnvelope.Height==0)) {
pNewEnvelopeFeedback = null; bInuse = false; return; } AddScaleBarForm scaleBarForm = new AddScaleBarForm(); //scaleBarForm.Show(); IStyleGalleryItem pStyleItem = Form1.pStyleGalleryItem; if (pStyleItem == null) { return; }
IMapFrame pMapframe = axPagelayoutControl.ActiveView.GraphicsContainer.FindFrame(axPagelayoutControl.ActiveView.FocusMap) as IMapFrame; IMapSurroundFrame pSurroundFrame = new MapSurroundFrameClass(); pSurroundFrame.MapFrame = pMapframe; pSurroundFrame.MapSurround = (IMapSurround)pStyleItem.Item; //在pageLayout中根据名称查要Element,找到之后删除已经存在的比例尺 IElement pelement = axPagelayoutControl.FindElementByName("ScaleBars"); if (pelement != null) { axPagelayoutControl.ActiveView.GraphicsContainer.DeleteElement(pelement); //删除已经存在的指北针 }
pelement = (IElement)pSurroundFrame; pelement.Geometry = (IGeometry)pEnvelope;
axPagelayoutControl.ActiveView.GraphicsContainer.AddElement(pelement,0); axPagelayoutControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics,sans-serif"> pNewEnvelopeFeedback = null; bInuse = false;
} } (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|