实例介绍
【实例截图】
【核心代码】
#region using引用 using System; using System.Windows.Forms; using ESRI.ArcGIS.Controls; using ESRI.ArcGIS.Carto; using ESRI.ArcGIS.Display; using ESRI.ArcGIS.Geometry; using ESRI.ArcGIS.esriSystem; using System.IO; using ESRI.ArcGIS.SystemUI; using AddData; using MapOperation; using QueryAndStatistics; using ESRI.ArcGIS.Geodatabase; using ESRI.ArcGIS.Geoprocessor; using 测量; using 打印; using _17; using _23; using HunanForestsInformation; using System.Collections.Generic; using EngineWindowsApplication2; using 符号化.Class; using ESRI.ArcGIS.DataSourcesFile; #endregion namespace 课设 { public partial class Form2 : Form { public Form2() { InitializeComponent(); } #region 变量定义 private string sMxdPath = Application.StartupPath; private IMap pMap = null; private IActiveView pActiveView = null; private List<ILayer> plstLayers = null; private IFeatureLayer pCurrentLyr = null; private IEngineEditor pEngineEditor = null; private IEngineEditTask pEngineEditTask = null; private IEngineEditLayers pEngineEditLayers = null; #endregion #region 获取路径 public string getPath(string path) { int t; for (t = 0; t < path.Length; t ) { if (path.Substring(t, 7) == "设计类综合实习") { break; } } string name = path.Substring(0, t 7); return name; } #endregion #region 主地图控件 /// <summary> /// 主地图控件OnMapReplaced事件 ///当主地图显示控件的地图更换时,鹰眼中的地图也跟随更换 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void buju() { //axMapControl3.SpatialReference = axMapControl1.SpatialReference; for (int i = axMapControl1.LayerCount - 1; i >= 0; i--) { //使鹰眼视图与数据视图的图层上下顺序保持一致 ILayer pLayer = axMapControl1.get_Layer(i); if (pLayer is IGroupLayer || pLayer is ICompositeLayer) { ICompositeLayer pCompositeLayer = (ICompositeLayer)pLayer; for (int j = pCompositeLayer.Count - 1; j >= 0; j--) { ILayer pSubLayer = pCompositeLayer.get_Layer(j); IFeatureLayer pFeatureLayer = pSubLayer as IFeatureLayer; //if (pFeatureLayer != null) //{ // //由于鹰眼地图较小,所以过滤点图层不添加 // if (pFeatureLayer.FeatureClass.ShapeType != esriGeometryType.esriGeometryPoint // && pFeatureLayer.FeatureClass.ShapeType != esriGeometryType.esriGeometryMultipoint) // { // axMapControl2.AddLayer(pLayer); // } //} } } else { IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer; if (pFeatureLayer != null) { if (pFeatureLayer.FeatureClass.ShapeType != esriGeometryType.esriGeometryPoint && pFeatureLayer.FeatureClass.ShapeType != esriGeometryType.esriGeometryMultipoint) axMapControl2.AddLayer(pLayer); } } } } private void SynchronizeEagleEye() { if (axMapControl2.LayerCount > 0) { axMapControl2.ClearLayers(); } //设置鹰眼和主地图的坐标系统一致 axMapControl2.SpatialReference = axMapControl1.SpatialReference; for (int i = axMapControl1.LayerCount - 1; i >= 0; i--) { //使鹰眼视图与数据视图的图层上下顺序保持一致 ILayer pLayer = axMapControl1.get_Layer(i); if (pLayer is IGroupLayer || pLayer is ICompositeLayer) { ICompositeLayer pCompositeLayer = (ICompositeLayer)pLayer; for (int j = pCompositeLayer.Count - 1; j >= 0; j--) { ILayer pSubLayer = pCompositeLayer.get_Layer(j); IFeatureLayer pFeatureLayer = pSubLayer as IFeatureLayer; if (pFeatureLayer != null) { //由于鹰眼地图较小,所以过滤点图层不添加 if (pFeatureLayer.FeatureClass.ShapeType != esriGeometryType.esriGeometryPoint && pFeatureLayer.FeatureClass.ShapeType != esriGeometryType.esriGeometryMultipoint) { axMapControl2.AddLayer(pLayer); } } } } else { IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer; if (pFeatureLayer != null) { if (pFeatureLayer.FeatureClass.ShapeType != esriGeometryType.esriGeometryPoint && pFeatureLayer.FeatureClass.ShapeType != esriGeometryType.esriGeometryMultipoint) axMapControl2.AddLayer(pLayer); } } //设置鹰眼地图全图显示 axMapControl2.Extent = axMapControl1.FullExtent; pEnv = axMapControl1.Extent as IEnvelope; DrawRectangle(pEnv); axMapControl2.ActiveView.Refresh(); } } #endregion #region 鹰眼地图控件 /// <summary> /// 初始化鹰眼地图控件 /// </summary> //private void axmp3() //{ // axMapControl3.Extent = axMapControl1.Extent; // pEnv1 = axMapControl3.Extent; // DrawRectangle(pEnv1); //} private void InitEagleEyeMap() { axMapControl2.Extent = axMapControl1.FullExtent; pEnv = axMapControl2.Extent; DrawRectangle(pEnv); } /// <summary> /// 鹰眼地图控件OnMouseDown事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void axMapControl2_OnMouseDown_1(object sender, IMapControlEvents2_OnMouseDownEvent e) { if (axMapControl2.Map.LayerCount > 0) { //按下鼠标左键移动矩形框 if (e.button == 1) { //如果指针落在鹰眼的矩形框中,标记可移动 if (e.mapX > pEnv.XMin && e.mapY > pEnv.YMin && e.mapX < pEnv.XMax && e.mapY < pEnv.YMax) { bCanDrag = true; } pMoveRectPoint = new PointClass(); pMoveRectPoint.PutCoords(e.mapX, e.mapY); //记录点击的第一个点的坐标 } //按下鼠标右键绘制矩形框 else if (e.button == 2) { IEnvelope pEnvelope = axMapControl2.TrackRectangle(); IPoint pTempPoint = new PointClass(); pTempPoint.PutCoords(pEnvelope.XMin pEnvelope.Width / 2, pEnvelope.YMin pEnvelope.Height / 2); axMapControl1.Extent = pEnvelope; //矩形框的高宽和数据试图的高宽不一定成正比,这里做一个中心调整 axMapControl1.CenterAt(pTempPoint); } } } /// <summary> /// 鹰眼地图控件OnMouseMove事件,移动矩形框 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void axMapControl2_OnMouseMove_1(object sender, IMapControlEvents2_OnMouseMoveEvent e) { if (axMapControl1.LayerCount != 0) { if (e.mapX > pEnv.XMin && e.mapY > pEnv.YMin && e.mapX < pEnv.XMax && e.mapY < pEnv.YMax) { //如果鼠标移动到矩形框中,鼠标换成小手,表示可以拖动 axMapControl2.MousePointer = esriControlsMousePointer.esriPointerHand; if (e.button == 2) //如果在内部按下鼠标右键,将鼠标演示设置为默认样式 { axMapControl2.MousePointer = esriControlsMousePointer.esriPointerDefault; } } else { //在其他位置将鼠标设为默认的样式 axMapControl2.MousePointer = esriControlsMousePointer.esriPointerDefault; } if (bCanDrag) { double Dx, Dy; //记录鼠标移动的距离 Dx = e.mapX - pMoveRectPoint.X; Dy = e.mapY - pMoveRectPoint.Y; pEnv.Offset(Dx, Dy); //根据偏移量更改 pEnv 位置 pMoveRectPoint.PutCoords(e.mapX, e.mapY); DrawRectangle(pEnv); axMapControl1.Extent = pEnv; } } } /// <summary> /// 设置地图控件中心点 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void axMapControl2_OnMouseUp_1(object sender, IMapControlEvents2_OnMouseUpEvent e) { if (e.button == 1 && pMoveRectPoint != null) { if (e.mapX == pMoveRectPoint.X && e.mapY == pMoveRectPoint.Y) { axMapControl1.CenterAt(pMoveRectPoint); } bCanDrag = false; } } /// <summary> /// 在鹰眼地图上面画矩形框 /// </summary> /// <param name="pEnvelope"></param> private void DrawRectangle(IEnvelope pEnvelope) { //在绘制前,清除鹰眼中之前绘制的矩形框 IGraphicsContainer pGraphicsContainer = axMapControl2.Map as IGraphicsContainer; //IGraphicsContainer pGC = axMapControl3.Map as IGraphicsContainer; IActiveView pActiveView = pGraphicsContainer as IActiveView; pGraphicsContainer.DeleteAllElements(); //得到当前视图范围 IRectangleElement pRectangleElement = new RectangleElementClass(); IElement pElement = pRectangleElement as IElement; pElement.Geometry = pEnvelope; //设置矩形框(实质为中间透明度面) IRgbColor pColor = new RgbColorClass(); pColor = GetRgbColor(255, 0, 0); pColor.Transparency = 255; ILineSymbol pOutLine = new SimpleLineSymbolClass(); pOutLine.Width = 2; pOutLine.Color = pColor; IFillSymbol pFillSymbol = new SimpleFillSymbolClass(); pColor = new RgbColorClass(); pColor.Transparency = 0; pFillSymbol.Color = pColor; pFillSymbol.Outline = pOutLine; //向鹰眼中添加矩形框 IFillShapeElement pFillShapeElement = pElement as IFillShapeElement; pFillShapeElement.Symbol = pFillSymbol; pGraphicsContainer.AddElement((IElement)pFillShapeElement, 0); //刷新 pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null); } /// <summary> /// 获取RGB颜色 /// </summary> /// <param name="intR">红</param> /// <param name="intG">绿</param> /// <param name="intB">蓝</param> /// <returns></returns> private IRgbColor GetRgbColor(int intR, int intG, int intB) { IRgbColor pRgbColor = null; if (intR < 0 || intR > 255 || intG < 0 || intG > 255 || intB < 0 || intB > 255) { return pRgbColor; } pRgbColor = new RgbColorClass(); pRgbColor.Red = intR; pRgbColor.Green = intG; pRgbColor.Blue = intB; return pRgbColor; } #endregion #region 鹰眼代码 private bool bCanDrag; //鹰眼地图上的矩形框可移动的标志 private IPoint pMoveRectPoint; //记录在移动鹰眼地图上的矩形框时鼠标的位置 private IEnvelope pEnv; //记录数据视图的Extent private void tabControl1_Selecting(object sender, TabControlCancelEventArgs e) { EagleEye eagleEye = new EagleEye(axMapControl1,axMapControl2,axPageLayoutControl1); if (e.TabPage.Name == "地图") eagleEye.ActiveMapControl(); else eagleEye.ActivePageLayouControl(); } private void axMapControl1_OnMapReplaced(object sender, IMapControlEvents2_OnMapReplacedEvent e) { SynchronizeEagleEye(); //comboBox1.Items.Clear(); //for (int i = 0; i < axMapControl1.LayerCount; i ) //{ // ILayer pLayer = axMapControl1.get_Layer(i); // comboBox1.Items.Add(pLayer.Name); //} } private void axMapControl1_OnExtentUpdated(object sender, IMapControlEvents2_OnExtentUpdatedEvent e) { //得到当前视图范围 pEnv = (IEnvelope)e.newEnvelope; DrawRectangle(pEnv); } private void tabPage2_Click(object sender, EventArgs e) { IObjectCopy pOC = new ObjectCopyClass(); object copyFormMap = axMapControl1.Map; object copiedMap = pOC.Copy(copyFormMap);//复制地图到copiedMap中 object copyToMap = axPageLayoutControl1.ActiveView.FocusMap; pOC.Overwrite(copiedMap, ref copyToMap);//复制地图 axPageLayoutControl1.ActiveView.Refresh(); } private void axMapControl1_OnAfterScreenDraw(object sender, IMapControlEvents2_OnAfterScreenDrawEvent e) { IActiveView pAV = (IActiveView)axPageLayoutControl1.ActiveView.FocusMap; IDisplayTransformation dTf = pAV.ScreenDisplay.DisplayTransformation; dTf.VisibleBounds = axMapControl1.Extent; axPageLayoutControl1.ActiveView.Refresh(); EagleEye eagleEye = new EagleEye(axMapControl1, axMapControl2, axPageLayoutControl1); eagleEye.CopyToPageLayout(); } #endregion #region 测量代码 #region 量测 //长度、面积量算 private Form3 frmMeasureResult = null; //量算结果窗体 string pMouseOperate = null; private INewLineFeedback pNewLineFeedback; //追踪线对象 private INewPolygonFeedback pNewPolygonFeedback; //追踪面对象 private IPoint pPointPt = null; //鼠标点击点 private IPoint pMovePt = null; //鼠标移动时的当前点 private double dToltalLength = 0; //量测总长度 private double dSegmentLength = 0; //片段距离 private IPointCollection pAreaPointCol = new MultipointClass(); //面积量算时画的点进行存储; private string sMapUnits = "未知单位"; //地图单位变量 private object missing = Type.Missing; bool measure = false; private void 测量ToolStripMenuItem_Click(object sender, EventArgs e) { } private void 距离测量ToolStripMenuItem_Click_1(object sender, EventArgs e) { measure = true; axMapControl1.CurrentTool = null; pMouseOperate = "MeasureLength"; axMapControl1.MousePointer = esriControlsMousePointer.esriPointerCrosshair; if (frmMeasureResult == null || frmMeasureResult.IsDisposed) { frmMeasureResult = new Form3(); frmMeasureResult.frmClosed = new Form3.FormClosedEventHandler(frmMeasureResult_frmColsed); frmMeasureResult.label2.Text = ""; frmMeasureResult.Text = "距离量测"; frmMeasureResult.Show(); } else { frmMeasureResult.Activate(); } } //测量结果窗口关闭响应事件 private void frmMeasureResult_frmColsed() { //清空线对象 if (pNewLineFeedback != null) { pNewLineFeedback.Stop(); pNewLineFeedback = null; } //清空面对象 if (pNewPolygonFeedback != null) { pNewPolygonFeedback.Stop(); pNewPolygonFeedback = null; pAreaPointCol.RemovePoints(0, pAreaPointCol.PointCount); //清空点集中所有点 } //清空量算画的线、面对象 axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewForeground, null, null); //结束量算功能 pMouseOperate = string.Empty; axMapControl1.MousePointer = esriControlsMousePointer.esriPointerDefault; } private void 面积测量ToolStripMenuItem_Click(object sender, EventArgs e) { measure = true; axMapControl1.CurrentTool = null; pMouseOperate = "MeasureArea"; axMapControl1.MousePointer = esriControlsMousePointer.esriPointerCrosshair; if (frmMeasureResult == null || frmMeasureResult.IsDisposed) { frmMeasureResult = new Form3(); frmMeasureResult.frmClosed = new Form3.FormClosedEventHandler(frmMeasureResult_frmColsed); frmMeasureResult.label2.Text = ""; frmMeasureResult.Text = "面积量测"; frmMeasureResult.Show(); } else { frmMeasureResult.Activate(); } } #endregion private void axMapControl1_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e) { if (export) { axMapControl1.ActiveView.GraphicsContainer.DeleteAllElements(); axMapControl1.ActiveView.Refresh(); IPolygon pPolygon = DrawPolygon(axMapControl1); if (pPolygon == null) return; ExportMap.AddElement(pPolygon, axMapControl1.ActiveView); if (fm2 == null || fm2.IsDisposed) { fm2 = new FormExportMap(axMapControl1); } fm2.IsRegion = true; fm2.GetGeometry = pPolygon as IGeometry; fm2.Show(); fm2.Activate(); export = false; } if (measure) { //屏幕坐标点转化为地图坐标点 pPointPt = (axMapControl1.Map as IActiveView).ScreenDisplay.DisplayTransformation.ToMapPoint(e.x, e.y); if (e.button == 1) { IActiveView pActiveView = axMapControl1.ActiveView; IEnvelope pEnvelope = new EnvelopeClass(); switch (pMouseOperate) { #region 距离量算 case "MeasureLength": //判断追踪线对象是否为空,若是则实例化并设置当前鼠标点为起始点 if (pNewLineFeedback == null) { //实例化追踪线对象 pNewLineFeedback = new NewLineFeedbackClass(); pNewLineFeedback.Display = (axMapControl1.Map as IActiveView).ScreenDisplay; //设置起点,开始动态线绘制 pNewLineFeedback.Start(pPointPt); dToltalLength = 0; } else //如果追踪线对象不为空,则添加当前鼠标点 { pNewLineFeedback.AddPoint(pPointPt); } //pGeometry = m_PointPt; if (dSegmentLength != 0) { dToltalLength = dToltalLength dSegmentLength; } break; #endregion #region 面积量算 case "MeasureArea": if (pNewPolygonFeedback == null) { //实例化追踪面对象 pNewPolygonFeedback = new NewPolygonFeedback(); pNewPolygonFeedback.Display = (axMapControl1.Map as IActiveView).ScreenDisplay; ; pAreaPointCol.RemovePoints(0, pAreaPointCol.PointCount); //开始绘制多边形 pNewPolygonFeedback.Start(pPointPt); pAreaPointCol.AddPoint(pPointPt, ref missing, ref missing); } else { pNewPolygonFeedback.AddPoint(pPointPt); pAreaPointCol.AddPoint(pPointPt, ref missing, ref missing); } break; #endregion } } } } private void axMapControl1_OnMouseMove(object sender, IMapControlEvents2_OnMouseMoveEvent e) { try { double Lpdx = e.mapX; double Lpdy = e.mapY; string strCoordinate = "X = " Lpdy.ToString() "; " "Y = " Lpdx.ToString(); toolStripStatusLabel_Coordinate.Text = strCoordinate; } catch (Exception ex) { MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } if (measure) { sMapUnits = GetMapUnit(axMapControl1.Map.MapUnits); pMovePt = (axMapControl1.Map as IActiveView).ScreenDisplay.DisplayTransformation.ToMapPoint(e.x, e.y); #region 长度量算 if (pMouseOperate == "MeasureLength") { if (pNewLineFeedback != null) { pNewLineFeedback.MoveTo(pMovePt); } double deltaX = 0; //两点之间X差值 double deltaY = 0; //两点之间Y差值 if ((pPointPt != null) && (pNewLineFeedback != null)) { deltaX = pMovePt.X - pPointPt.X; deltaY = pMovePt.Y - pPointPt.Y; dSegmentLength = Math.Round(Math.Sqrt((deltaX * deltaX) (deltaY * deltaY)), 3); dToltalLength = dToltalLength dSegmentLength; if (frmMeasureResult != null) { frmMeasureResult.label2.Text = String.Format( "当前线段长度:{0:.###}{1};\r\n总长度为: {2:.###}{1}", dSegmentLength, sMapUnits, dToltalLength); dToltalLength = dToltalLength - dSegmentLength; //鼠标移动到新点重新开始计算 } frmMeasureResult.frmClosed = new Form3.FormClosedEventHandler(frmMeasureResult_frmColsed); } } #endregion #region 面积量算 if (pMouseOperate == "MeasureArea") { if (pNewPolygonFeedback != null) { pNewPolygonFeedback.MoveTo(pMovePt); } IPointCollection pPointCol = new Polygon(); IPolygon pPolygon = new PolygonClass(); IGeometry pGeo = null; ITopologicalOperator pTopo = null; for (int i = 0; i <= pAreaPointCol.PointCount - 1; i ) { pPointCol.AddPoint(pAreaPointCol.get_Point(i), ref missing, ref missing); } pPointCol.AddPoint(pMovePt, ref missing, ref missing); if (pPointCol.PointCount < 3) return; pPolygon = pPointCol as IPolygon; if ((pPolygon != null)) { pPolygon.Close(); pGeo = pPolygon as IGeometry; pTopo = pGeo as ITopologicalOperator; //使几何图形的拓扑正确 pTopo.Simplify(); pGeo.Project(axMapControl1.Map.SpatialReference); IArea pArea = pGeo as IArea; frmMeasureResult.label2.Text = String.Format( "总面积为:{0:.####}平方{1};\r\n总长度为:{2:.####}{1}", pArea.Area, sMapUnits, pPolygon.Length); pPolygon = null; } } #endregion } } private string GetMapUnit(esriUnits _esriMapUnit) { string sMapUnits = string.Empty; switch (_esriMapUnit) { case esriUnits.esriCentimeters: sMapUnits = "厘米"; break; case esriUnits.esriDecimalDegrees: sMapUnits = "十进制"; break; case esriUnits.esriDecimeters: sMapUnits = "分米"; break; case esriUnits.esriFeet: sMapUnits = "尺"; break; case esriUnits.esriInches: sMapUnits = "英寸"; break; case esriUnits.esriKilometers: sMapUnits = "千米"; break; case esriUnits.esriMeters: sMapUnits = "米"; break; case esriUnits.esriMiles: sMapUnits = "英里"; break; case esriUnits.esriMillimeters: sMapUnits = "毫米"; break; case esriUnits.esriNauticalMiles: sMapUnits = "海里"; break; case esriUnits.esriPoints: sMapUnits = "点"; break; case esriUnits.esriUnitsLast: sMapUnits = "UnitsLast"; break; case esriUnits.esriUnknownUnits: sMapUnits = "未知单位"; break; case esriUnits.esriYards: sMapUnits = "码"; break; default: break; } return sMapUnits; } private void axMapControl1_OnDoubleClick(object sender, IMapControlEvents2_OnDoubleClickEvent e) { if (measure) { #region 长度量算 if (pMouseOperate == "MeasureLength") { if (frmMeasureResult != null) { frmMeasureResult.label2.Text = "线段总长度为:" dToltalLength sMapUnits; } if (pNewLineFeedback != null) { pNewLineFeedback.Stop(); pNewLineFeedback = null; //清空所画的线对象 (axMapControl1.Map as IActiveView).PartialRefresh(esriViewDrawPhase.esriViewForeground, null, null); } dToltalLength = 0; dSegmentLength = 0; measure = false; } #endregion #region 面积量算 if (pMouseOperate == "MeasureArea") { if (pNewPolygonFeedback != null) { pNewPolygonFeedback.Stop(); pNewPolygonFeedback = null; //清空所画的线对象 (axMapControl1.Map as IActiveView).PartialRefresh(esriViewDrawPhase.esriViewForeground, null, null); } pAreaPointCol.RemovePoints(0, pAreaPointCol.PointCount); //清空点集中所有点 measure = false; } #endregion } } #endregion private void Form1_Load(object sender, EventArgs e) { CenterToScreen(); axToolbarControl1.AddItem("esriControls.ControlsMapZoomInTool", -1, -1, true, 0, esriCommandStyles.esriCommandStyleIconOnly); axToolbarControl1.AddItem("esriControls.ControlsMapZoomOutTool", -1, -1, false, 0, esriCommandStyles.esriCommandStyleIconOnly); axToolbarControl1.AddItem("esriControls.ControlsMapFullExtentCommand", -1, -1, false, 0, esriCommandStyles.esriCommandStyleIconOnly); } #region 数据操作 #region 加载地图 private void 加载PersonGeodatabase数据ToolStripMenuItem_Click(object sender, EventArgs e) { LoadDataClass ldc = new LoadDataClass(axMapControl1); ldc.AddPersonGeodatabase(); } private void 加载MXDToolStripMenuItem_Click(object sender, EventArgs e) { LoadDataClass ldc = new LoadDataClass(axMapControl1); ldc.LoadMxFile(); } private void 加载shape文件ToolStripMenuItem_Click(object sender, EventArgs e) { LoadDataClass ldc = new LoadDataClass(axMapControl1); ldc.AddShapefile(); } private void 加载raster数据ToolStripMenuItem_Click(object sender, EventArgs e) { LoadDataClass ldc = new LoadDataClass(axMapControl1); ldc.AddRaster(); } private void 加载CAD数据ToolStripMenuItem_Click(object sender, EventArgs e) { LoadDataClass ldc = new LoadDataClass(axMapControl1); ldc.AddCADByLayer(); } private void 加载FileGeodatabase数据ToolStripMenuItem_Click(object sender, EventArgs e) { LoadDataClass ldc = new LoadDataClass(axMapControl1); ldc.AddFileDatabase(); } private void 加载ArcSED数据ToolStripMenuItem_Click(object sender, EventArgs e) { LoadDataClass ldc = new LoadDataClass(axMapControl1); ldc.AddSDEByDirect(); } #endregion private void 保存文档ToolStripMenuItem_Click(object sender, EventArgs e) { LoadDataClass ldc = new LoadDataClass(axMapControl1); ldc.SaveMap(); MessageBox.Show("保存成功!"); } private void 文档另存为ToolStripMenuItem_Click(object sender, EventArgs e) { LoadDataClass ldc = new LoadDataClass(axMapControl1); ldc.SaveAsMap(); MessageBox.Show("另存成功!"); } #region 导出地图 FormExportMap fm2 = null; //string pMouseOperate = null; bool export = false; public IPolygon DrawPolygon(AxMapControl mapCtrl) { IGeometry pGeometry = null; if (mapCtrl == null) return null; IRubberBand rb = new RubberPolygonClass(); pGeometry = rb.TrackNew(mapCtrl.ActiveView.ScreenDisplay, null); return pGeometry as IPolygon; } private void 导出地图ToolStripMenuItem_Click(object sender, EventArgs e) { } private void 全域导出ToolStripMenuItem_Click(object sender, EventArgs e) { export = true; if (fm2 == null || fm2.IsDisposed) { fm2 = new FormExportMap(axMapControl1); } fm2.IsRegion = false; fm2.GetGeometry = axMapControl1.ActiveView.Extent; fm2.Show(); fm2.Activate(); export = false; } private void 区域导出ToolStripMenuItem_Click(object sender, EventArgs e) { export = true; axMapControl1.CurrentTool = null; axMapControl1.MousePointer = esriControlsMousePointer.esriPointerCrosshair; pMouseOperate = "ExportRegion"; } #endregion #endregion private void 清除选择ToolStripMenuItem_Click(object sender, EventArgs e) { IActiveView pActiveView = axMapControl1.ActiveView; pActiveView.FocusMap.ClearSelection(); pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, pActiveView.Extent); } #region 空间查询 bool query = false; private void 属性查询ToolStripMenuItem_Click(object sender, EventArgs e) { query = true; //新创建属性查询窗体 FormQueryByAttribute formQueryByAttribute = new FormQueryByAttribute(); //将当前主窗体中MapControl控件中的Map对象赋值给FormQueryByAttribute窗体的CurrentMap属性 formQueryByAttribute.CurrentMap = axMapControl1.Map; //显示属性查询窗体 formQueryByAttribute.Show(); } private void 空间查询ToolStripMenuItem1_Click(object sender, EventArgs e) { query = true; //新创建空间查询窗体 FormQueryBySpatial formQueryBySpatial = new FormQueryBySpatial(); //将当前主窗体中MapControl控件中的Map对象赋值给FormSelection窗体的CurrentMap属性 formQueryBySpatial.CurrentMap = axMapControl1.Map; //显示空间查询窗体 formQueryBySpatial.Show(); } private void 缩放至要素ToolStripMenuItem_Click(object sender, EventArgs e) { if (query) { IRgbColor rgb; ISymbol pSymbol = null; ISelectionEnvironment iSelectionEnvironment = new SelectionEnvironmentClass(); iSelectionEnvironment.DefaultColor = new RgbColorClass() { Red = 255, Blue = 0, Green = 0 }; System.Windows.Forms.Application.DoEvents(); ICommand pCommand = new ESRI.ArcGIS.Controls.ControlsZoomToSelectedCommandClass(); pCommand.OnCreate(axMapControl1.Object); pCommand.OnClick(); axMapControl1.ActiveView.ScreenDisplay.UpdateWindow(); ISelection selection = axMapControl1.Map.FeatureSelection; IEnumFeature enumFeature = (IEnumFeature)selection; enumFeature.Reset(); IFeature pFeature = enumFeature.Next(); //ArrayClass array = new ArrayClass(); //while (pFeature != null) //{ // array.Add(pFeature); // pFeature = enumFeature.Next(); //} switch (pFeature.Shape.GeometryType) { case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon: ISimpleFillSymbol pfillSymbol = new SimpleFillSymbol(); rgb = new RgbColorClass() { Red = 255, Blue = 0, Green = 0 }; pfillSymbol.Color = rgb; pSymbol = pfillSymbol as ISymbol; break; case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline: ISimpleLineSymbol plineSymbol = new SimpleLineSymbol(); rgb = new RgbColorClass() { Red = 255, Blue = 0, Green = 0 }; plineSymbol.Color = rgb; pSymbol = plineSymbol as ISymbol; break; case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPoint: ISimpleMarkerSymbol pMarkerSymbol = new SimpleMarkerSymbol(); rgb = new RgbColorClass() { Red = 255, Blue = 0, Green = 0 }; pMarkerSymbol.Color = rgb; pSymbol = pMarkerSymbol as ISymbol; break; default: break; } axMapControl1.FlashShape(pFeature.Shape, 5, 1000, pSymbol); query = false; //IActiveView.Refresh()并不会立刻启动 redraw 方法来重新绘制窗口,要想立刻绘制,需要显式调用ScreenDIsplay.UpdateWindow()方法。 } else MessageBox.Show("请先选择查询方式选择要素。"); } #endregion #region 打印 frmPrintPreview print; public bool printf = false; private void 打印ToolStripMenuItem_Click(object sender, EventArgs e) { printf = true; print = new frmPrintPreview(axPageLayoutControl1); print.fm1 = this; print.ShowDialog(); } #endregion #region GP工具 bool GP=false; private void 添加shp图层ToolStripMenuItem1_Click(object sender, EventArgs e) { GP = true; OpenFileDialog ofd = new OpenFileDialog(); ofd.Multiselect = true; ofd.CheckFileExists = true; ofd.Title = "打开图片"; ofd.Filter = "*.shp|*.shp"; ofd.ShowDialog(); if (ofd.FileName == "") return; int Index = ofd.FileName.LastIndexOf("\\"); string pFilePath = ofd.FileName.Substring(0, Index); string pFileName = ofd.FileName.Substring(Index 1); IMap map = new Map(); map.Name = "shp"; axMapControl1.DocumentFilename = string.Empty; axMapControl1.Map = map; axMapControl1.AddShapeFile(pFilePath, pFileName); axMapControl1.ActiveView.Refresh(); } private void 缓冲区分析ToolStripMenuItem_Click(object sender, EventArgs e) { if (GP) { try { //缓冲区分析-GP工具调用 Geoprocessor gp = new Geoprocessor(); gp.OverwriteOutput = true; ESRI.ArcGIS.AnalysisTools.Buffer pBuffer = new ESRI.ArcGIS.AnalysisTools.Buffer(); //获取缓冲区分析图层 ILayer pLayer = this.axMapControl1.get_Layer(0); IFeatureLayer featLayer = pLayer as IFeatureLayer; pBuffer.in_features = featLayer; string filepath = @"E:\"; //设置生成结果存储路径 pBuffer.out_feature_class = filepath "\\" pLayer.Name ".shp"; //设置缓冲区距离 pBuffer.buffer_distance_or_field = "5000 Meters"; pBuffer.dissolve_option = "ALL"; //执行缓冲区分析 gp.Execute(pBuffer, null); //将生成结果添加到地图中 this.axMapControl1.AddShapeFile(filepath, pLayer.Name); MessageBox.Show("缓冲区已生成,文件保存至路径'E\'"); this.axMapControl1.MoveLayerTo(1, 0); } catch (Exception ex) { //MessageBox.Show("请输入有效数据"); MessageBox.Show(ex.Message); } } else MessageBox.Show("请先添加.shp图层。"); } private void shape转CADToolStripMenuItem_Click(object sender, EventArgs e) { if (GP) { FrmShapeToCAD pFrmShapeToCAD = new FrmShapeToCAD(this.axMapControl1); pFrmShapeToCAD.ShowDialog(); if (pFrmShapeToCAD.DialogResult == DialogResult.OK) { this.axMapControl1.Refresh(); this.axTOCControl1.Refresh(); } } else MessageBox.Show("请先添加.shp图层。"); } private void shp导入GeodatabaseToolStripMenuItem1_Click(object sender, EventArgs e) { //首先打开ShapeFile数据 IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactory(); OpenFileDialog openFileDialog1 = new OpenFileDialog(); openFileDialog1.Filter = "ShapeFile(*.shp)|*.shp"; openFileDialog1.Multiselect = false; DialogResult pDialogResult = openFileDialog1.ShowDialog(); if (pDialogResult != DialogResult.OK) return; string pPath = openFileDialog1.FileName; string pFolder = System.IO.Path.GetDirectoryName(pPath); string pFileName = System.IO.Path.GetFileName(pPath); //获得ShapeFile数据的工作空间 IWorkspaceName sourceWorkspaceName = new WorkspaceNameClass(); sourceWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory"; sourceWorkspaceName.PathName = pFolder; IName sourceWorkspaceIName = (IName)sourceWorkspaceName; IWorkspace sourceWorkspace = (IWorkspace)sourceWorkspaceIName.Open(); // 打开目标存储File GeodataBase然后并打开此文件数据库工作空间 IWorkspaceName targetWorkspaceName = new WorkspaceNameClass { WorkspaceFactoryProgID = "esriDataSourcesGDB.FileGDBWorkspaceFactory", PathName = pFolder @"\FileGDB.gdb" }; IName targetWorkspaceIName = (IName)targetWorkspaceName; IWorkspace targetWorkspace = null; try { targetWorkspace = (IWorkspace)targetWorkspaceIName.Open(); } catch (Exception ex) { MessageBox.Show(this, "未能正确读取目标工作空间,请确保读取ShapeFile数据路径下有FileGDB.gdb空间数据库(直接将数据压缩文件解压即可)!", "运行提示"); } // 将ShapeFile数据转化为IDatasetName数据集 IFeatureClassName sourceFeatureClassName = new FeatureClassNameClass(); IDatasetName sourceDatasetName = (IDatasetName)sourceFeatureClassName; sourceDatasetName.Name = pFileName.Split('.')[0]; sourceDatasetName.WorkspaceName = sourceWorkspaceName; // 为目标转化图层创建数据集 IFeatureClassName targetFeatureClassName = new FeatureClassNameClass(); IDatasetName targetDatasetName = (IDatasetName)targetFeatureClassName; targetDatasetName.Name = pFileName.Split('.')[0]; targetDatasetName.WorkspaceName = targetWorkspaceName; // 打开源ShapeFile数据获得IFeatureClass IName sourceName = (IName)sourceFeatureClassName; IFeatureClass sourceFeatureClass = (IFeatureClass)sourceName.Open(); // 获得源ShapeFile数据的所有字段 IFieldChecker fieldChecker = new FieldCheckerClass(); IFields sourceFields = sourceFeatureClass.Fields; IFields targetFields = null; IEnumFieldError enumFieldError = null; // 设置字段检验参数 fieldChecker.InputWorkspace = sourceWorkspace; fieldChecker.ValidateWorkspace = targetWorkspace; // 检验字段集合是否符合转换要求 fieldChecker.Validate(sourceFields, out enumFieldError, out targetFields); if (enumFieldError != null) { MessageBox.Show("数据在进行字段转换过程中出现错误!"); } // 获ShapeFile数据图形要素字段 String shapeFieldName = sourceFeatureClass.ShapeFieldName; int shapeFieldIndex = sourceFeatureClass.FindField(shapeFieldName); IField shapeField = sourceFields.get_Field(shapeFieldIndex); // 进行图形要素克隆 IGeometryDef geometryDef = shapeField.GeometryDef; IClone geometryDefClone = (IClone)geometryDef; IClone targetGeometryDefClone = geometryDefClone.Clone(); IGeometryDef targetGeometryDef = (IGeometryDef)targetGeometryDefClone; // 利用IGeometryDefEdit进行目标要素图层属性设置 IGeometryDefEdit targetGeometryDefEdit = (IGeometryDefEdit)targetGeometryDef; targetGeometryDefEdit.GridCount_2 = 1; targetGeometryDefEdit.set_GridSize(0, 0.75); // 选择特定条件要素 IQueryFilter queryFilter = new QueryFilterClass(); queryFilter.WhereClause = "PROVINCE = 37"; queryFilter.SubFields = "*"; // 通过IFeatureDataConverter进行数据转换 try { IFeatureDataConverter featureDataConverter = new FeatureDataConverterClass(); IEnumInvalidObject enumInvalidObject = featureDataConverter.ConvertFeatureClass (sourceFeatureClassName, queryFilter, null, targetFeatureClassName, targetGeometryDef, targetFields, "", 1000, 0); // Check for errors. IInvalidObjectInfo invalidObjectInfo = null; enumInvalidObject.Reset(); while ((invalidObjectInfo = enumInvalidObject.Next()) != null) { //输出转换过程日志 MessageBox.Show("数据在进行" invalidObjectInfo.InvalidObjectID "要素转换过程中出现错误!"); } MessageBox.Show("转换成功结束!"); } catch { MessageBox.Show("在目标文件夹中存在同名称图层,请先删除!", "消息", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); } } #endregion #region contextMenuScript private void axTOCControl1_OnMouseDown(object sender, ITOCControlEvents_OnMouseDownEvent e) { ESRI.ArcGIS.Geometry.Point pMoveLayerPoint = new ESRI.ArcGIS.Geometry.Point();//鼠标在TOC中左键按下时点的位置 ILayer pLyr = null; System.Object pIndex = null; IBasicMap pMap = null; System.Object pOther = null; esriTOCControlItem pItem = new esriTOCControlItem(); try { //调用HitTest方法() axTOCControl1.HitTest(e.x, e.y, ref pItem, ref pMap, ref pLyr, ref pOther, ref pIndex); if (e.button == 1) { switch (pItem)//pItem是判断鼠标点击部位的关键 { case esriTOCControlItem.esriTOCControlItemLayer: if (pLyr == null) return;//如果没有点击到图层 else if (pLyr is IAnnotationSublayer)//如果点击的是注记层,则退出 return; else { pMoveLayerPoint.PutCoords(e.x, e.y); axMapControl1.CustomProperty = pLyr; } //if (pLyr is IFeatureLayer) ;//矢量图层 //if (pLyr is IRasterLayer) ;//栅格图层 //MessageBox.Show("您点击了图层\"" pLyr.Name "\"的名称"); break; case esriTOCControlItem.esriTOCControlItemLegendClass: MessageBox.Show("您点击了图层\"" pLyr.Name "\"的图例"); break; case esriTOCControlItem.esriTOCControlItemMap: MessageBox.Show("您点击了名称为\"" pMap.Name "\"的Map" "对象的名称,它包含\"" pMap.LayerCount "\"个图层"); break; case esriTOCControlItem.esriTOCControlItemNone: MessageBox.Show("您点击了TocControl控件的空白处。"); break; default: break; } } else if (e.button == 2) { axMapControl1.CustomProperty = pLyr; if (pLyr != null && pItem == esriTOCControlItem.esriTOCControlItemLayer) contextMenuStrip1.Show(axTOCControl1, e.x, e.y); //if (pItem == esriTOCControlItem.esriTOCControlItemMap) // contextMenuStrip1.Show(axTOCControl1, e.x, e.y); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } private ESRI.ArcGIS.Geometry.Point pMoveLayerPoint = new ESRI.ArcGIS.Geometry.Point();//鼠标在TOC中左键按下时点的位置 private FormAttribute frmAttribute = null; //图层属性窗体 private void 属性表ToolStripMenuItem_Click(object sender, EventArgs e) { IFeatureLayer pFeatureLayer = axMapControl1.CustomProperty as IFeatureLayer; if (pFeatureLayer == null) return; if (frmAttribute == null || frmAttribute.IsDisposed) frmAttribute = new FormAttribute(); frmAttribute.CurFeatureLayer = pFeatureLayer; frmAttribute.InitUI(); frmAttribute.ShowDialog(); } private void 缩放到图层ToolStripMenuItem_Click(object sender, EventArgs e) { ILayer pLayer = axMapControl1.CustomProperty as ILayer; if (pLayer == null) return; (axMapControl1.Map as IActiveView).Extent = pLayer.AreaOfInterest; (axMapControl1.Map as IActiveView).PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); } private void 删除图层ToolStripMenuItem_Click(object sender, EventArgs e) { try { ILayer pLayer = axMapControl1.CustomProperty as ILayer; if (pLayer == null) return; DialogResult result = MessageBox.Show("是否删除[" pLayer.Name "]图层", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); if (result == DialogResult.OK) axMapControl1.Map.DeleteLayer(pLayer); axMapControl1.ActiveView.Refresh(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void 统计ToolStripMenuItem_Click(object sender, EventArgs e) { FormStatistics fm = new FormStatistics(); //将当前主窗体中MapControl控件中的Map对象赋值给FormStatistics窗体的CurrentMap属性 fm.CurrentMap = axMapControl1.Map; //显示统计窗体 fm.Show(); } #region 标注 private frmAnnotation frmAnnotation = null; // 注记 private OperateMap m_OperateMap = new OperateMap(); private void 图层标注ToolStripMenuItem_Click(object sender, EventArgs e) { try { if (frmAnnotation == null || frmAnnotation.IsDisposed) { frmAnnotation = new frmAnnotation(); frmAnnotation.Annotation = new frmAnnotation.AnnotationEventHandler(frmAnnotation_Annotation); } frmAnnotation.Map = axMapControl1.Map; frmAnnotation.InitUI(); frmAnnotation.ShowDialog(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } void frmAnnotation_Annotation(string sFeatClsName, string sFieldName) { IFeatureLayer pFeatLyr = m_OperateMap.GetFeatLyrByName(axMapControl1.Map, sFeatClsName); Annotation(pFeatLyr, sFieldName); } /// <summary> /// 注记 /// </summary> /// <param name="pFeatLyr">注记图层名称</param> /// <param name="sFieldName">注记字段</param> private void Annotation(IFeatureLayer pFeatLyr, string sFieldName) { try { IGeoFeatureLayer pGeoFeatLyer = pFeatLyr as IGeoFeatureLayer; IAnnotateLayerPropertiesCollection pAnnoProps = pGeoFeatLyer.AnnotationProperties; pAnnoProps.Clear(); //设置标注记体格式 ITextSymbol pTextSymbol = new TextSymbolClass(); stdole.StdFont pFont = new stdole.StdFontClass(); pFont.Name = "verdana"; pFont.Size = 10; pTextSymbol.Font = pFont as stdole.IFontDisp; //设置注记放置格式 ILineLabelPosition pPosition = new LineLabelPositionClass(); pPosition.Parallel = false; pPosition.Perpendicular = true; ILineLabelPlacementPriorities pPlacement = new LineLabelPlacementPrioritiesClass(); IBasicOverposterLayerProperties pBasic = new BasicOverposterLayerPropertiesClass(); pBasic.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolyline; pBasic.LineLabelPlacementPriorities = pPlacement;//设置标注文本摆设路径权重 pBasic.LineLabelPosition = pPosition;//控制文本的排放位置 ILabelEngineLayerProperties pLableEngine = new LabelEngineLayerPropertiesClass(); pLableEngine.Symbol = pTextSymbol; pLableEngine.BasicOverposterLayerProperties = pBasic;//设置标注文本的放置方式,以及处理文字间冲突的处理方式等 pLableEngine.Expression = "[" sFieldName "]";//输入VBScript或JavaScript语言,设置要标注的字段 IAnnotateLayerProperties pAnnoLayerProps = pLableEngine as IAnnotateLayerProperties; pAnnoProps.Add(pAnnoLayerProps); pGeoFeatLyer.DisplayAnnotation = true; axMapControl1.Refresh(esriViewDrawPhase.esriViewBackground, null, null); axMapControl1.Update(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } #endregion private void Form2_FormClosing(object sender, FormClosingEventArgs e) { } #endregion #region 符号化 private OperateMap_1 m_OperateMap_1 = null; public string filepath = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase; #region 点状要素符号化 private void 简单类型符号化ToolStripMenuItem_Click(object sender, EventArgs e) { try { //获取目标图层 ILayer pLayer = new FeatureLayerClass(); pLayer = axMapControl1.get_Layer(0); IGeoFeatureLayer pGeoFeatLyr = pLayer as IGeoFeatureLayer; //设置点符号 ISimpleMarkerSymbol pMarkerSymbol = new SimpleMarkerSymbol(); pMarkerSymbol.Style = esriSimpleMarkerStyle.esriSMSSquare;//设置点符号样式为方形 IRgbColor pRgbColor = new RgbColor(); pRgbColor = GetRgbColor(225, 100, 100); pMarkerSymbol.Color = pRgbColor;//设置点符号颜色 ISymbol pSymbol = (ISymbol)pMarkerSymbol; //更改符号样式 ISimpleRenderer pSimpleRenderer = new SimpleRendererClass(); pSimpleRenderer.Symbol = pSymbol; pGeoFeatLyr.Renderer = pSimpleRenderer as IFeatureRenderer; axMapControl1.Refresh(); axTOCControl1.Update(); } catch { MessageBox.Show("请输入有效图层!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } private void 箭头类型符号化ToolStripMenuItem_Click(object sender, EventArgs e) { try { //获取目标图层 ILayer pLayer = new FeatureLayerClass(); pLayer = axMapControl1.get_Layer(0); IGeoFeatureLayer pGeoFeatLyr = pLayer as IGeoFeatureLayer; //设置点符号 IArrowMarkerSymbol pArrowMarkerSymbol = new ArrowMarkerSymbolClass(); IRgbColor pRgbColor = new RgbColor(); pRgbColor = GetRgbColor(255, 100, 0); pArrowMarkerSymbol.Angle = 90; pArrowMarkerSymbol.Color = pRgbColor; pArrowMarkerSymbol.Length = 20;//设置简单顶点到底边的距离 pArrowMarkerSymbol.Width = 10;//设置箭头底边宽度 pArrowMarkerSymbol.XOffset = 0; pArrowMarkerSymbol.YOffset = 0; pArrowMarkerSymbol.Style = esriArrowMarkerStyle.esriAMSPlain;//设置点符号样式 //更改符号样式 ISimpleRenderer pSimpleRenderer = new SimpleRendererClass(); pSimpleRenderer.Symbol = pArrowMarkerSymbol as ISymbol; pGeoFeatLyr.Renderer = pSimpleRenderer as IFeatureRenderer; axMapControl1.Refresh(); axTOCControl1.Update(); } catch { MessageBox.Show("请输入有效图层", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } private void 字符型点符号化ToolStripMenuItem_Click(object sender, EventArgs e) { try { //获取目标图层 ILayer pLayer = new FeatureLayerClass(); pLayer = axMapControl1.get_Layer(0); IGeoFeatureLayer pGeoFeatLyr = pLayer as IGeoFeatureLayer; //设置点符号 ICharacterMarkerSymbol pCharacterMarkerSymbol = new CharacterMarkerSymbol(); stdole.IFontDisp pFontDisp = (stdole.IFontDisp)(new stdole.StdFontClass()); IRgbColor pRgbColor = new RgbColor(); pRgbColor = GetRgbColor(255, 0, 0); pFontDisp.Name = "arial";//设置字体样式 pFontDisp.Italic = true;//设置是否采用斜体字符 pCharacterMarkerSymbol.Angle = 0; pCharacterMarkerSymbol.CharacterIndex = 65; pCharacterMarkerSymbol.Color = pRgbColor; pCharacterMarkerSymbol.Font = pFontDisp; pCharacterMarkerSymbol.Size = 10; pCharacterMarkerSymbol.XOffset = 3; pCharacterMarkerSymbol.YOffset = 3; //更改符号样式 ISimpleRenderer pSimpleRenderer = new SimpleRendererClass(); pSimpleRenderer.Symbol = pCharacterMarkerSymbol as ISymbol; pGeoFeatLyr.Renderer = pSimpleRenderer as IFeatureRenderer; axMapControl1.Refresh(); axTOCControl1.Update(); } catch { MessageBox.Show("请输入有效图层", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } private void 图片型点符号化ToolStripMenuItem_Click(object sender, EventArgs e) { try { //获取目标图层 ILayer pLayer = new FeatureLayerClass(); pLayer = axMapControl1.get_Layer(0); IGeoFeatureLayer pGeoFeatLyr = pLayer as IGeoFeatureLayer; //设置点符号 IPictureMarkerSymbol pPictureMarkerSymbol = new PictureMarkerSymbolClass(); string fileName = filepath "city.bmp"; pPictureMarkerSymbol.CreateMarkerSymbolFromFile(esriIPictureType.esriIPictureBitmap, fileName);//图片类型和图片来源 pPictureMarkerSymbol.Angle = 0; pPictureMarkerSymbol.Size = 10; pPictureMarkerSymbol.XOffset = 0; pPictureMarkerSymbol.YOffset = 0; //更改符号样式 ISimpleRenderer pSimpleRenderer = new SimpleRendererClass(); pSimpleRenderer.Symbol = pPictureMarkerSymbol as ISymbol; pGeoFeatLyr.Renderer = pSimpleRenderer as IFeatureRenderer; axMapControl1.Refresh(); axTOCControl1.Update(); } catch { MessageBox.Show("请输入有效图层", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } private void 叠加型点符号化ToolStripMenuItem_Click(object sender, EventArgs e) { try { //获取目标图层 ILayer pLayer = new FeatureLayerClass(); pLayer = axMapControl1.get_Layer(0); IGeoFeatureLayer pGeoFeatLyr = pLayer as IGeoFeatureLayer; //设置点符号 IMultiLayerMarkerSymbol pMultiLayerMarkerSymbol = new MultiLayerMarkerSymbolClass(); IPictureMarkerSymbol pPictureMarkerSymbol = new PictureMarkerSymbolClass(); ICharacterMarkerSymbol pCharacterMarkerSymbol = new CharacterMarkerSymbol(); stdole.IFontDisp fontDisp = (stdole.IFontDisp)(new stdole.StdFontClass()); IRgbColor pGgbColor = new RgbColor(); pGgbColor = GetRgbColor(0, 0, 0); fontDisp.Name = "arial"; fontDisp.Size = 12; fontDisp.Italic = true; //创建字符符号 pCharacterMarkerSymbol.Angle = 0; pCharacterMarkerSymbol.CharacterIndex = 97;//字母a pCharacterMarkerSymbol.Color = pGgbColor; pCharacterMarkerSymbol.Font = fontDisp; pCharacterMarkerSymbol.Size = 24; //创建图片符号 string fileName = filepath "city.bmp"; pPictureMarkerSymbol.CreateMarkerSymbolFromFile(esriIPictureType.esriIPictureBitmap, fileName); pPictureMarkerSymbol.Angle = 0; pPictureMarkerSymbol.BitmapTransparencyColor = pGgbColor; pPictureMarkerSymbol.Size = 10; //添加图片、字符符号到组合符号中 pMultiLayerMarkerSymbol.AddLayer(pCharacterMarkerSymbol); pMultiLayerMarkerSymbol.AddLayer(pPictureMarkerSymbol); pMultiLayerMarkerSymbol.Angle = 0; pMultiLayerMarkerSymbol.Size = 20; pMultiLayerMarkerSymbol.XOffset = 5; pMultiLayerMarkerSymbol.YOffset = 5; //更改符号样式 ISimpleRenderer pSimpleRenderer = new SimpleRendererClass(); pSimpleRenderer.Symbol = pMultiLayerMarkerSymbol as ISymbol; pGeoFeatLyr.Renderer = pSimpleRenderer as IFeatureRenderer; axMapControl1.Refresh(); axTOCControl1.Update(); } catch { MessageBox.Show("请输入有效图层", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } #endregion #region 线状要素符号化 private void 简单线符号ToolStripMenuItem_Click(object sender, EventArgs e) { try { //获取目标图层 ILayer pLayer = new FeatureLayerClass(); pLayer = axMapControl1.get_Layer(3); IGeoFeatureLayer pGeoFeatLyr = pLayer as IGeoFeatureLayer; //设置线符号 ISimpleLineSymbol simpleLineSymbol = new SimpleLineSymbolClass(); simpleLineSymbol.Width = 0;//定义线的宽度 simpleLineSymbol.Style = esriSimpleLineStyle.esriSLSInsideFrame; //定义线的样式 simpleLineSymbol.Color = GetRgbColor(255, 100, 0);//定义线的颜色 ISymbol symbol = simpleLineSymbol as ISymbol; //更改符号样式 ISimpleRenderer pSimpleRenderer = new SimpleRendererClass(); pSimpleRenderer.Symbol = symbol; pGeoFeatLyr.Renderer = pSimpleRenderer as IFeatureRenderer; axMapControl1.Refresh(); axTOCControl1.Update(); } catch (Exception ex) { } } private void 制图线符号化ToolStripMenuItem_Click(object sender, EventArgs e) { try { //获取目标图层 ILayer pLayer = new FeatureLayerClass(); pLayer = axMapControl1.get_Layer(3); IGeoFeatureLayer pGeoFeatLyr = pLayer as IGeoFeatureLayer; //设置线符号 ICartographicLineSymbol pCartographicLineSymbol = new CartographicLineSymbolClass(); pCartographicLineSymbol.Cap = esriLineCapStyle.esriLCSRound;//设置线要素首尾端点形状为圆形 pCartographicLineSymbol.Join = esriLineJoinStyle.esriLJSRound; //设置线要素转折点出的样式为圆滑 pCartographicLineSymbol.Width = 2; //设置线要素符号模板 ILineProperties pLineProperties; pLineProperties = pCartographicLineSymbol as ILineProperties; pLineProperties.Offset = 0; double[] dob = new double[6]; dob[0] = 0; dob[1] = 1; dob[2] = 2; dob[3] = 3; dob[4] = 4; dob[5] = 5; ITemplate pTemplate = new TemplateClass(); pTemplate.Interval = 1; for (int i = 0; i < dob.Length; i = 2) { pTemplate.AddPatternElement(dob[i], dob[i 1]); } pLineProperties.Template = pTemplate; IRgbColor pRgbColor = GetRgbColor(0, 255, 0); pCartographicLineSymbol.Color = pRgbColor; //更改符号样式 ISimpleRenderer pSimpleRenderer = new SimpleRendererClass(); pSimpleRenderer.Symbol = pCartographicLineSymbol as ISymbol; pGeoFeatLyr.Renderer = pSimpleRenderer as IFeatureRenderer; axMapControl1.Refresh(); axTOCControl1.Update(); } catch { } } private void 多图层线符号化ToolStripMenuItem_Click(object sender, EventArgs e) { try { //获取目标图层 ILayer pLayer = new FeatureLayerClass(); pLayer = axMapControl1.get_Layer(3); IGeoFeatureLayer pGeoFeatLyr = pLayer as IGeoFeatureLayer; //设置线符号 IMultiLayerLineSymbol pMultiLayerLineSymbol = new MultiLayerLineSymbolClass(); ISimpleLineSymbol pSimpleLineSymbol = new SimpleLineSymbolClass(); pSimpleLineSymbol.Style = esriSimpleLineStyle.esriSLSDashDotDot; pSimpleLineSymbol.Width = 2; IRgbColor pRgbColor = GetRgbColor(255, 0, 0); pSimpleLineSymbol.Color = pRgbColor; //ISymbol pSymbol = pSimpleLineSymbol as ISymbol; //pSymbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen; //设置线要素的颜色为 ICartographicLineSymbol pCartographicLineSymbol = new CartographicLineSymbolClass(); pCartographicLineSymbol.Cap = esriLineCapStyle.esriLCSRound; pCartographicLineSymbol.Join = esriLineJoinStyle.esriLJSRound; pCartographicLineSymbol.Width = 2; ILineProperties pLineProperties; pLineProperties = pCartographicLineSymbol as ILineProperties; pLineProperties.Offset = 0; double[] dob = new double[6]; dob[0] = 0; dob[1] = 1; dob[2] = 2; dob[3] = 3; dob[4] = 4; dob[5] = 5; ITemplate pTemplate = new TemplateClass(); pTemplate.Interval = 1; for (int i = 0; i < dob.Length; i = 2) { pTemplate.AddPatternElement(dob[i], dob[i 1]); } pLineProperties.Template = pTemplate; pRgbColor = GetRgbColor(0, 255, 0); pCartographicLineSymbol.Color = pRgbColor; pMultiLayerLineSymbol.AddLayer(pSimpleLineSymbol); pMultiLayerLineSymbol.AddLayer(pCartographicLineSymbol); //更改符号样式 ISimpleRenderer pSimpleRenderer = new SimpleRendererClass(); pSimpleRenderer.Symbol = pMultiLayerLineSymbol as ISymbol; pGeoFeatLyr.Renderer = pSimpleRenderer as IFeatureRenderer; axMapControl1.Refresh(); axTOCControl1.Update(); } catch { } } private void 图片线符号化ToolStripMenuItem_Click(object sender, EventArgs e) { try { //获取目标图层 ILayer pLayer = new FeatureLayerClass(); pLayer = axMapControl1.get_Layer(3); IGeoFeatureLayer pGeoFeatLyr = pLayer as IGeoFeatureLayer; //设置线符号 IPictureLineSymbol pictureLineSymbol = new PictureLineSymbolClass(); //创建图片符号 string fileName = filepath "city.bmp"; pictureLineSymbol.CreateLineSymbolFromFile(esriIPictureType.esriIPictureBitmap, fileName); IRgbColor rgbColor = GetRgbColor(255, 0, 0); pictureLineSymbol.Color = rgbColor; pictureLineSymbol.Offset = 0; pictureLineSymbol.Width = 3; pictureLineSymbol.Rotate = false; //更改符号样式 ISimpleRenderer pSimpleRenderer = new SimpleRendererClass(); pSimpleRenderer.Symbol = pictureLineSymbol as ISymbol; pGeoFeatLyr.Renderer = pSimpleRenderer as IFeatureRenderer; axMapControl1.Refresh(); axTOCControl1.Update(); } catch { } } private void 离散型符号ToolStripMenuItem_Click(object sender, EventArgs e) { try { //获取目标图层 ILayer pLayer = new FeatureLayerClass(); pLayer = axMapControl1.get_Layer(3); IGeoFeatureLayer pGeoFeatLyr = pLayer as IGeoFeatureLayer; //设置线符号 IHashLineSymbol pHashLineSymbol = new HashLineSymbolClass(); ILineProperties pLineProperties = pHashLineSymbol as ILineProperties; pLineProperties.Offset = 0; double[] dob = new double[6]; dob[0] = 0; dob[1] = 1; dob[2] = 2; dob[3] = 3; dob[4] = 4; dob[5] = 5; ITemplate pTemplate = new TemplateClass(); pTemplate.Interval = 1; for (int i = 0; i < dob.Length; i = 2) { pTemplate.AddPatternElement(dob[i], dob[i 1]); } pLineProperties.Template = pTemplate; pHashLineSymbol.Width = 2; pHashLineSymbol.Angle = 45;//设置单一线段的倾斜角度 IRgbColor pColor = new RgbColor(); pColor = GetRgbColor(0, 0, 255); pHashLineSymbol.Color = pColor; //更改符号样式 ISimpleRenderer pSimpleRenderer = new SimpleRendererClass(); pSimpleRenderer.Symbol = pHashLineSymbol as ISymbol; pGeoFeatLyr.Renderer = pSimpleRenderer as IFeatureRenderer; axMapControl1.Refresh(); axTOCControl1.Update(); } catch { } } #endregion #region 面状要素符号化 private void 简单填充符号ToolStripMenuItem_Click(object sender, EventArgs e) { try { //获取目标图层 ILayer pLayer = new FeatureLayerClass(); pLayer = axMapControl1.get_Layer(5); IGeoFeatureLayer pGeoFeatLyr = pLayer as IGeoFeatureLayer; //设置面填充符号 ISimpleFillSymbol pSimpleFillSymbol = new SimpleFillSymbolClass(); pSimpleFillSymbol.Style = esriSimpleFillStyle.esriSFSVertical;//设置面填充为垂直线填充 pSimpleFillSymbol.Color = GetRgbColor(150, 150, 150); //更改符号样式 ISimpleRenderer pSimpleRenderer = new SimpleRendererClass(); pSimpleRenderer.Symbol = pSimpleFillSymbol as ISymbol; pGeoFeatLyr.Renderer = pSimpleRenderer as IFeatureRenderer; axMapControl1.Refresh(); axTOCControl1.Update(); } catch { } } private void 线填充符号ToolStripMenuItem_Click(object sender, EventArgs e) { try { //获取目标图层 ILayer pLayer = new FeatureLayerClass(); pLayer = axMapControl1.get_Layer(5); IGeoFeatureLayer pGeoFeatLyr = pLayer as IGeoFeatureLayer; //设置面填充符号 ISimpleLineSymbol pSimpleLineSymbol = new SimpleLineSymbolClass(); pSimpleLineSymbol.Style = esriSimpleLineStyle.esriSLSDashDotDot; //定义线的样式 pSimpleLineSymbol.Width = 2;//定义线的宽度 IRgbColor pRgbColor = GetRgbColor(255, 0, 0); pSimpleLineSymbol.Color = pRgbColor;//定义线的颜色 ILineFillSymbol pLineFillSymbol = new LineFillSymbol(); pLineFillSymbol.Angle = 45; pLineFillSymbol.Separation = 10; pLineFillSymbol.Offset = 5; pLineFillSymbol.LineSymbol = pSimpleLineSymbol; //更改符号样式 ISimpleRenderer pSimpleRenderer = new SimpleRendererClass(); pSimpleRenderer.Symbol = pLineFillSymbol as ISymbol; pGeoFeatLyr.Renderer = pSimpleRenderer as IFeatureRenderer; axMapControl1.Refresh(); axTOCControl1.Update(); } catch { } } private void 点填充符号ToolStripMenuItem_Click(object sender, EventArgs e) { try { //获取目标图层 ILayer pLayer = new FeatureLayerClass(); pLayer = axMapControl1.get_Layer(5); IGeoFeatureLayer pGeoFeatLyr = pLayer as IGeoFeatureLayer; //设置面填充符号 IArrowMarkerSymbol pArrowMarkerSymbol = new ArrowMarkerSymbolClass();//设置填充点点符号样式 IRgbColor pRgbColor = GetRgbColor(255, 0, 0); pArrowMarkerSymbol.Color = pRgbColor as IColor; pArrowMarkerSymbol.Length = 2; pArrowMarkerSymbol.Width = 2; pArrowMarkerSymbol.Style = esriArrowMarkerStyle.esriAMSPlain; IMarkerFillSymbol pMarkerFillSymbol = new MarkerFillSymbolClass(); pMarkerFillSymbol.MarkerSymbol = pArrowMarkerSymbol; pRgbColor = GetRgbColor(255, 0, 0); pMarkerFillSymbol.Color = pRgbColor; pMarkerFillSymbol.Style = esriMarkerFillStyle.esriMFSGrid; IFillProperties pFillProperties = pMarkerFillSymbol as IFillProperties; pFillProperties.XOffset = 2; pFillProperties.YOffset = 2; pFillProperties.XSeparation = 5; pFillProperties.YSeparation = 5; //更改符号样式 ISimpleRenderer pSimpleRenderer = new SimpleRendererClass(); pSimpleRenderer.Symbol = pFillProperties as ISymbol; pGeoFeatLyr.Renderer = pSimpleRenderer as IFeatureRenderer; axMapControl1.Refresh(); axTOCControl1.Update(); } catch { } } private void 渐变色填充符号ToolStripMenuItem_Click(object sender, EventArgs e) { try { //获取目标图层 ILayer pLayer = new FeatureLayerClass(); pLayer = axMapControl1.get_Layer(5); IGeoFeatureLayer pGeoFeatLyr = pLayer as IGeoFeatureLayer; //设置面填充符号 IGradientFillSymbol pGradientFillSymbol = new GradientFillSymbolClass(); IAlgorithmicColorRamp pAlgorithcColorRamp = new AlgorithmicColorRampClass();//设置颜色带 pAlgorithcColorRamp.FromColor = GetRgbColor(255, 0, 0);//颜色带的起始颜色 pAlgorithcColorRamp.ToColor = GetRgbColor(0, 255, 0);//颜色带的终点颜色 pAlgorithcColorRamp.Algorithm = esriColorRampAlgorithm.esriHSVAlgorithm; pGradientFillSymbol.ColorRamp = pAlgorithcColorRamp;//填充颜色带 pGradientFillSymbol.GradientAngle = 90;//设置填充方向 pGradientFillSymbol.GradientPercentage = 1;//控制色彩饱和度 pGradientFillSymbol.IntervalCount = 5;//设置填充颜色带的数目 pGradientFillSymbol.Style = esriGradientFillStyle.esriGFSLinear;//设置颜色填充带样式为线性填充 //更改符号样式 ISimpleRenderer pSimpleRenderer = new SimpleRendererClass(); pSimpleRenderer.Symbol = pGradientFillSymbol as ISymbol; pGeoFeatLyr.Renderer = pSimpleRenderer as IFeatureRenderer; axMapControl1.Refresh(); axTOCControl1.Update(); } catch { } } private void 图片填充符号ToolStripMenuItem_Click(object sender, EventArgs e) { try { //获取目标图层 ILayer pLayer = new FeatureLayerClass(); pLayer = axMapControl1.get_Layer(5); IGeoFeatureLayer pGeoFeatLyr = pLayer as IGeoFeatureLayer; //设置面填充符号 IPictureFillSymbol pictureFillSymbol = new PictureFillSymbolClass(); string fileName = filepath "states.bmp"; pictureFillSymbol.CreateFillSymbolFromFile(esriIPictureType.esriIPictureBitmap, fileName); ISimpleLineSymbol simpleLineSymbol = new SimpleLineSymbolClass(); simpleLineSymbol.Style = esriSimpleLineStyle.esriSLSDashDotDot; simpleLineSymbol.Color = GetRgbColor(255, 0, 0); ISymbol symbol = pictureFillSymbol as ISymbol; pictureFillSymbol.Outline = simpleLineSymbol;//设置面要素边线颜色 pictureFillSymbol.Angle = 0;//设置图片显示方向 //更改符号样式 ISimpleRenderer pSimpleRenderer = new SimpleRendererClass(); pSimpleRenderer.Symbol = pictureFillSymbol as ISymbol; pGeoFeatLyr.Renderer = pSimpleRenderer as IFeatureRenderer; axMapControl1.Refresh(); axTOCControl1.Update(); } catch { } } private void 多层填充符号ToolStripMenuItem_Click(object sender, EventArgs e) { try { //获取目标图层 ILayer pLayer = new FeatureLayerClass(); pLayer = axMapControl1.get_Layer(5); IGeoFeatureLayer pGeoFeatLyr = pLayer as IGeoFeatureLayer; //设置渐变色填充面符号 IMultiLayerFillSymbol pMultiLayerFillSymbol = new MultiLayerFillSymbolClass(); IGradientFillSymbol pGradientFillSymbol = new GradientFillSymbolClass(); IAlgorithmicColorRamp pAlgorithcColorRamp = new AlgorithmicColorRampClass(); pAlgorithcColorRamp.FromColor = GetRgbColor(255, 0, 0); pAlgorithcColorRamp.ToColor = GetRgbColor(0, 255, 0); pAlgorithcColorRamp.Algorithm = esriColorRampAlgorithm.esriHSVAlgorithm; pGradientFillSymbol.ColorRamp = pAlgorithcColorRamp; pGradientFillSymbol.GradientAngle = 45; pGradientFillSymbol.GradientPercentage = 0.9; pGradientFillSymbol.Style = esriGradientFillStyle.esriGFSLinear; //设置线填充面符号 ISimpleLineSymbol pSimpleLineSymbol = new SimpleLineSymbolClass(); pSimpleLineSymbol.Style = esriSimpleLineStyle.esriSLSDashDotDot; pSimpleLineSymbol.Width = 2; IRgbColor pRgbColor = GetRgbColor(255, 0, 0); pSimpleLineSymbol.Color = pRgbColor; ILineFillSymbol pLineFillSymbol = new LineFillSymbol(); pLineFillSymbol.Angle = 45; pLineFillSymbol.Separation = 10; pLineFillSymbol.Offset = 5; pLineFillSymbol.LineSymbol = pSimpleLineSymbol; //组合填充符号 pMultiLayerFillSymbol.AddLayer(pGradientFillSymbol); pMultiLayerFillSymbol.AddLayer(pLineFillSymbol); //更改符号样式 ISimpleRenderer pSimpleRenderer = new SimpleRendererClass(); pSimpleRenderer.Symbol = pMultiLayerFillSymbol as ISymbol; pGeoFeatLyr.Renderer = pSimpleRenderer as IFeatureRenderer; axMapControl1.Refresh(); axTOCControl1.Update(); } catch { } } #endregion #endregion private void 导出为shp格式ToolStripMenuItem_Click(object sender, EventArgs e) { SaveFileDialog dlg = new SaveFileDialog(); if (DialogResult.OK == dlg.ShowDialog()) { string file = dlg.FileName.Substring(0, dlg.FileName.LastIndexOf("\\")); if (!System.IO.Directory.Exists(file)) { System.IO.Directory.CreateDirectory(file); } try { ILayer pLayer = axMapControl1.Map.get_Layer(0); if (pLayer != null) { IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer; if (pFeatureLayer.Visible) { ExportFeature(pFeatureLayer.FeatureClass,dlg.FileName); } } MessageBox.Show("导出成功"); } catch { MessageBox.Show("导出失败!"); } } } private void ExportShp() { SaveFileDialog dlg = new SaveFileDialog(); if (DialogResult.OK == dlg.ShowDialog()) { string file = dlg.FileName.Substring(0, dlg.FileName.LastIndexOf("\\")); if (!System.IO.Directory.Exists(file)) { System.IO.Directory.CreateDirectory(file); } try { ILayer pLayer = axMapControl1.Map.get_Layer(1); if (pLayer != null) { IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer; if (pFeatureLayer.Visible) { ExportFeature(pFeatureLayer.FeatureClass, dlg.FileName); } } MessageBox.Show("导出成功"); } catch { MessageBox.Show("导出失败!"); } } } public void ExportFeature(IFeatureClass pInFeatureClass,string pPath) { // create a new Access workspace factory IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); string parentPath=pPath.Substring(0, pPath.LastIndexOf("\\")); string fileName= pPath.Substring(pPath.LastIndexOf("\\") 1, pPath.Length - pPath.LastIndexOf("\\") - 1); IWorkspaceName pWorkspaceName = pWorkspaceFactory.Create(parentPath,fileName, null, 0); // Cast for IName IName name = (IName)pWorkspaceName; //Open a reference to the access workspace through the name object IWorkspace pOutWorkspace = (IWorkspace)name.Open(); IDataset pInDataset = pInFeatureClass as IDataset; IFeatureClassName pInFCName = pInDataset.FullName as IFeatureClassName; IWorkspace pInWorkspace = pInDataset.Workspace; IDataset pOutDataset = pOutWorkspace as IDataset; IWorkspaceName pOutWorkspaceName = pOutDataset.FullName as IWorkspaceName; IFeatureClassName pOutFCName = new FeatureClassNameClass(); IDatasetName pDatasetName = pOutFCName as IDatasetName; pDatasetName.WorkspaceName = pOutWorkspaceName; pDatasetName.Name = pInFeatureClass.AliasName; IFieldChecker pFieldChecker = new FieldCheckerClass(); pFieldChecker.InputWorkspace = pInWorkspace; pFieldChecker.ValidateWorkspace = pOutWorkspace; IFields pFields = pInFeatureClass.Fields; IFields pOutFields; IEnumFieldError pEnumFieldError; pFieldChecker.Validate(pFields, out pEnumFieldError, out pOutFields); IFeatureDataConverter pFeatureDataConverter = new FeatureDataConverterClass(); pFeatureDataConverter.ConvertFeatureClass(pInFCName, null, null, pOutFCName, null, pOutFields, "", 100, 0); } } }
标签: 开发
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论