代码下载地址:https://files.cnblogs.com/ogis/MapControlApplication2.rar
以下几个函数功能主要是向地图中添加IElement,一共四个函数:
GetColor,CreateSimpleLineSymbol,CreateSimpleFillSymbol,AddCreateElement
功能函数:AddCreateElement
调用例子:
ISymbol pSymbol = AEUtil.CreateSimpleFillSymbol(Color.Red, 100, esriSimpleFillStyle.esriSFSCross); AEUtil.AddCreateElement(pFeature.ShapeCopy, m_MapControl.ActiveView, pSymbol, fucosKey);
通过red green blue 三色创建IRgbColor
public static IRgbColor GetColor(int r, int g, int b) { RgbColor color = new RgbColor(); color.Red = r; color.Green = g; color.Blue = b; return color; }
创建简单线Symbol 输入参数 color-颜色,width-宽度,style-线型,有七种线型可选
esriSLSSolid esriSLSDash esriSLSDot esriSLSDashDot esriSLSDashDotDot esriSLSNull esriSLSInsideFrame
public static ISymbol CreateSimpleLineSymbol(Color color, int width, esriSimpleLineStyle style) { ISimpleLineSymbol pSimpleLineSymbol; pSimpleLineSymbol = new SimpleLineSymbol(); pSimpleLineSymbol.Width = width; pSimpleLineSymbol.Color = GetColor(color.R, color.G, color.B); pSimpleLineSymbol.Style = style; return (ISymbol)pSimpleLineSymbol;
}
创建面填充ISymbol对象. fillColor-颜色,oLineWidth-外廓线宽,fillStyle-填充类型,有以下可选
esriSFSSolid esriSFSNull esriSFSHollow esriSFSHorizontal esriSFSVertical esriSFSForwardDiagonal esriSFSBackwardDiagonal esriSFSCross esriSFSDiagonalCross
public static ISymbol CreateSimpleFillSymbol(Color fillColor, int oLineWidth, esriSimpleFillStyle fillStyle) { ISimpleFillSymbol pSimpleFillSymbol; pSimpleFillSymbol = new SimpleFillSymbol(); pSimpleFillSymbol.Style = fillStyle; pSimpleFillSymbol.Color = GetColor(fillColor.R, fillColor.G, fillColor.B); pSimpleFillSymbol.Outline = (ILineSymbol)CreateSimpleLineSymbol(fillColor, 1, esriSimpleLineStyle.esriSLSDash); return (ISymbol)pSimpleFillSymbol;
}
函数实现向地图中添加元素,pGeometry-元素形状,pActiveView-地图视图,pSymbol-符号,key-元素属性
public static IElement AddCreateElement(IGeometry pGeometry, IActiveView pActiveView, ISymbol pSymbol, string key) { try { IGraphicsContainer pGraphicsContainer = pActiveView.GraphicsContainer; IElement pElement = null; ILineElement pLineElement = null; IFillShapeElement pFillShapeElement = null; IMarkerElement pMarkerElement = null; ICircleElement pCircleElement = null; IElementProperties pElmentProperties = null; switch (pGeometry.GeometryType) {
case esriGeometryType.esriGeometryEnvelope: { pElement = new RectangleElement(); pElement.Geometry = pGeometry; pFillShapeElement = (IFillShapeElement)pElement; pFillShapeElement.Symbol = (IFillSymbol)pSymbol; break; } case esriGeometryType.esriGeometryPolyline: { pElement = new LineElement(); pElement.Geometry = pGeometry;
pLineElement = (ILineElement)pElement; pLineElement.Symbol = (ILineSymbol)pSymbol; break; } case esriGeometryType.esriGeometryLine: { pElement = new LineElement(); pElement.Geometry = pGeometry;
pLineElement = (ILineElement)pElement; pLineElement.Symbol = (ILineSymbol)pSymbol; break; } case esriGeometryType.esriGeometryPolygon: { pElement = new PolygonElement(); pElement.Geometry = pGeometry; pFillShapeElement = (IFillShapeElement)pElement;
pFillShapeElement.Symbol = (IFillSymbol)pSymbol; break; } case esriGeometryType.esriGeometryMultipoint: case esriGeometryType.esriGeometryPoint: { pElement = new MarkerElement(); pElement.Geometry = pGeometry;
pMarkerElement = (IMarkerElement)pElement;
pMarkerElement.Symbol = (IMarkerSymbol)pSymbol; break; } case esriGeometryType.esriGeometryCircularArc: { pElement = new CircleElementClass(); pElement.Geometry = pGeometry;
pCircleElement = (ICircleElement)pElement; break; } default: pElement = null; break; }
if (pElement != null) { pElmentProperties = pElement as IElementProperties; pElmentProperties.Name = key;
pGraphicsContainer.AddElement(pElement, 0); pActiveView.PartialRefresh(esriViewDrawPhase.esriViewBackground, null, pGeometry.Envelope); return pElement; } else { return null; } } catch (Exception ex) { return null; } }
|
请发表评论