public moFeature Clone() { moGeometryTypeConstant sShapeType = _ShapeType; moGeometry sGeometry = null; moAttributes sAttributes = _Attributes.Clone(); if (_ShapeType == moGeometryTypeConstant.Point) { moPoint sPoint = (moPoint)_Geometry; sGeometry = sPoint.Clone(); } else if (_ShapeType == moGeometryTypeConstant.MultiPolyline) { moMultiPolyline sMultiPolyline = (moMultiPolyline)_Geometry; sGeometry = sMultiPolyline.Clone(); } else if (_ShapeType == moGeometryTypeConstant.MultiPolygon) { moMultiPolygon sMultiPolygon = (moMultiPolygon)_Geometry; sGeometry = sMultiPolygon.Clone(); } moFeature sFeature = new moFeature(sShapeType, sGeometry, sAttributes); return(sFeature); }
/// <summary> /// 绘制所有选择要素 /// </summary> /// <param name="g"></param> /// <param name="extent"></param> /// <param name="mapScale"></param> /// <param name="dpm"></param> /// <param name="mpu"></param> /// <param name="symbol"></param> internal void DrawSelectedFeatures(Graphics g, moRectangle extent, double mapScale, double dpm, double mpu, moSymbol symbol) { //判断是否位于绘制范围内,不是,则绘制 Int32 sFeatureCount = _SelectedFeatures.Count; for (Int32 i = 0; i < sFeatureCount; i++) { moFeature sFeature = _SelectedFeatures.GetItem(i); if (IsFeatureInExtent(sFeature, extent) == true) { moGeometry sGeometry = sFeature.Geometry; moMapDrawingTools.DrawGeometry(g, extent, mapScale, dpm, mpu, sGeometry, symbol); } } }
/// <summary> /// 绘制所有要素 /// </summary> /// <param name="g">绘图对象</param> /// <param name="extent">绘制范围(地图坐标)</param> /// <param name="mapScale">地图比例尺的倒数</param> /// <param name="dpm">每米对应的点数</param> /// <param name="mpu">地图坐标单位对应的米数</param> internal void DrawFeatures(Graphics g, moRectangle extent, double mapScale, double dpm, double mpu) { //(1)为所有要素配置符号 SetFeatureSymbols(); //(2)判断是否位于绘制范围内,如是,则绘制 Int32 sFeatureCount = _Features.Count; for (Int32 i = 0; i < sFeatureCount; i++) { moFeature sFeature = _Features.GetItem(i); if (IsFeatureInExtent(sFeature, extent) == true) { moGeometry sGeometry = sFeature.Geometry; moSymbol sSymbol = sFeature.Symbol; moMapDrawingTools.DrawGeometry(g, extent, mapScale, dpm, mpu, sGeometry, sSymbol); } } }
private moSymbol _Symbol; //配置的符号 #endregion #region 构造函数 public moFeature(moGeometryTypeConstant shapeType, moGeometry geometry, moAttributes attributes) { _ShapeType = shapeType; _Geometry = geometry; _Attributes = attributes; }
internal static void DrawGeometry(Graphics g, moRectangle extent, double mapScale, double dpm, double mpu, moGeometry geometry, moSymbol symbol) { if (extent == null) { return; } if (geometry == null) { return; } if (symbol == null) { return; } if (geometry.GetType() == typeof(moPoint)) { moPoint sPoint = (moPoint)geometry; DrawPoint(g, extent, mapScale, dpm, mpu, sPoint, symbol); } else if (geometry.GetType() == typeof(moMultiPolyline)) { moMultiPolyline sMultiPolyline = (moMultiPolyline)geometry; DrawMultiPolyline(g, extent, mapScale, dpm, mpu, sMultiPolyline, symbol); } else if (geometry.GetType() == typeof(moMultiPolygon)) { moMultiPolygon sMultiPolygon = (moMultiPolygon)geometry; DrawMultiPolygon(g, extent, mapScale, dpm, mpu, sMultiPolygon, symbol); } }