private void ConvertPointAnnotation() { IPointPlacementPriorities pointPlacementPriorities = new PointPlacementPrioritiesClass(); pointPlacementPriorities.AboveLeft = (int)numAboveLeft.Value; pointPlacementPriorities.AboveCenter = (int)numAboveCenter.Value; pointPlacementPriorities.AboveRight = (int)numAboveRight.Value; pointPlacementPriorities.CenterRight = (int)numCenterRight.Value; pointPlacementPriorities.BelowRight = (int)numBelowRight.Value; pointPlacementPriorities.BelowCenter = (int)numBelowCenter.Value; pointPlacementPriorities.BelowLeft = (int)numBelowLeft.Value; pointPlacementPriorities.CenterLeft = (int)numCenterLeft.Value; IRgbColor rgbColor = new RgbColorClass(); rgbColor.Red = cmbSetAnnoPointColor.Color.R; rgbColor.Blue = cmbSetAnnoPointColor.Color.B; rgbColor.Green = cmbSetAnnoPointColor.Color.G; esriBasicOverposterWeight labelWeight = (esriBasicOverposterWeight)Enum.Parse(typeof(esriBasicOverposterWeight), radioGroupPointLabelWeight.EditValue.ToString()); esriBasicOverposterWeight featureWeight = (esriBasicOverposterWeight)Enum.Parse(typeof(esriBasicOverposterWeight), radioGroupPointFeatureWeight.EditValue.ToString()); esriLabelWhichFeatures selectionType = (esriLabelWhichFeatures)Enum.Parse(typeof(esriLabelWhichFeatures), radioGroupSelectionType.EditValue.ToString()); string expression = TxtPointExpression.Text; ConvertAnnotation(_context.FocusMap, _pointFeatureLayer, txtPointAno.Text, Convert.ToDouble(cboScale.Text), _workspace, null, pointPlacementPriorities, labelWeight, featureWeight, checkBoxPointPlaceOverlappingLabels.Checked == false, cmbSetAnnoPointFront.Text, (double)numSetAnnoPointFrontSize.Value, rgbColor, expression, chbPointLinked.Checked, selectionType); }
/// <summary> /// Annotate Layer /// </summary> /// <param name="layer"></param> /// <param name="labelField"></param> /// <author>Shen Yongyuan</author> /// <date>20091111</date> public static void AnnotateLayer(ILayer layer, string labelField) { IFeatureLayer feaLayer = layer as IFeatureLayer; IGeoFeatureLayer geoFeaLayer = layer as IGeoFeatureLayer; IAnnotateLayerPropertiesCollection pAnnoProps = geoFeaLayer.AnnotationProperties; pAnnoProps.Clear(); ITextSymbol pTextSyl = new TextSymbolClass(); Font fnt = new System.Drawing.Font("宋体", 10f, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); pTextSyl.Size = 10; //pTextSyl.Font = ESRI.ArcGIS.ADF.COMSupport.OLE.GetIFontDispFromFont(fnt) as stdole.IFontDisp; pTextSyl.Color = Town.ArcGIS.Color.ToEsriColor(System.Drawing.Color.Black); IBasicOverposterLayerProperties pBasic = new BasicOverposterLayerPropertiesClass(); if (feaLayer.FeatureClass.ShapeType == esriGeometryType.esriGeometryPolygon) { ILineLabelPosition pPosition = new LineLabelPositionClass(); ILineLabelPlacementPriorities pPlacementLine = new LineLabelPlacementPrioritiesClass(); pBasic.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolygon; pBasic.LineLabelPlacementPriorities = pPlacementLine; pBasic.LineLabelPosition = pPosition; } else if (feaLayer.FeatureClass.ShapeType == esriGeometryType.esriGeometryPoint) { IPointPlacementPriorities pPlacementPoint = new PointPlacementPrioritiesClass(); pBasic.FeatureType = esriBasicOverposterFeatureType.esriOverposterPoint; pBasic.PointPlacementPriorities = pPlacementPoint; pBasic.PointPlacementOnTop = false; pBasic.PointPlacementMethod = esriOverposterPointPlacementMethod.esriAroundPoint; } else if (feaLayer.FeatureClass.ShapeType == esriGeometryType.esriGeometryPolyline) { ILineLabelPosition pPosition = new LineLabelPositionClass(); ILineLabelPlacementPriorities pPlacementLine = new LineLabelPlacementPrioritiesClass(); pBasic.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolyline; pBasic.LineLabelPlacementPriorities = pPlacementLine; pBasic.LineLabelPosition = pPosition; } pBasic.LabelWeight = esriBasicOverposterWeight.esriHighWeight; pBasic.FeatureWeight = esriBasicOverposterWeight.esriNoWeight; ILabelEngineLayerProperties pLabelEngine = new LabelEngineLayerPropertiesClass(); pLabelEngine.Symbol = pTextSyl; pLabelEngine.BasicOverposterLayerProperties = pBasic; pLabelEngine.Expression = "[" + labelField + "]"; IAnnotateLayerProperties pAnnoLayerProps = pLabelEngine as IAnnotateLayerProperties; pAnnoProps.Add(pAnnoLayerProps); geoFeaLayer.DisplayAnnotation = true; }
private void btnuse_Click(object sender, EventArgs e) { try { IFontDisp pFont = new StdFontClass() as IFontDisp; pTextSymbol.Color = ClsGDBDataCommon.ColorToIColor(symbolcolor.SelectedColor); pFont.Bold = toolBtnBold.Checked; pFont.Italic = toolBtnIntend.Checked; pFont.Strikethrough = toolBtnStrikethrough.Checked; pFont.Underline = toolBtnUnderline.Checked; pFont.Name = cmbfont.Text; pFont.Size = decimal.Parse(cmbsize.Text); pTextSymbol.Font = pFont; IGeoFeatureLayer pGeoLayer = (IGeoFeatureLayer)pLayer; pGeoLayer.AnnotationProperties.Clear(); ILabelEngineLayerProperties pLabelEngine = new LabelEngineLayerPropertiesClass(); pLabelEngine.Symbol = pTextSymbol; //pLabelEngine2.BasicOverposterLayerProperties = pBasicProperties as IBasicOverposterLayerProperties; if (cmbfields.Text.Contains("[") && cmbfields.Text.Contains("]")) { pLabelEngine.Expression = cmbfields.Text; } else { string Exptext = "[" + cmbfields.Text + "]"; pLabelEngine.Expression = Exptext; } IBasicOverposterLayerProperties4 pBasic = new BasicOverposterLayerPropertiesClass(); //pBasic.PolygonPlacementMethod = esriOverposterPolygonPlacementMethod.esriAlwaysHorizontal; if (chkOverLap.Checked) { pBasic.GenerateUnplacedLabels = true; } if (pLayer is IFeatureLayer) { IFeatureLayer featureLayer = pLayer as FeatureLayer; if (featureLayer.FeatureClass == null) { return; } if (featureLayer.FeatureClass.ShapeType == esriGeometryType.esriGeometryPoint) { IPointPlacementPriorities pPointPlace = new PointPlacementPrioritiesClass(); pBasic.PointPlacementMethod = esriOverposterPointPlacementMethod.esriAroundPoint; pBasic.PointPlacementOnTop = radioCenterTop.Checked; SetPointPlacementPriorities(pPointPlace); pBasic.PointPlacementPriorities = pPointPlace; } else if (featureLayer.FeatureClass.ShapeType == esriGeometryType.esriGeometryPolyline) { //更改角度 //= new LineLabelPositionClass(); IClone pSrcClone = pBasic.LineLabelPosition as IClone; IClone pDstClone = pSrcClone.Clone(); ILineLabelPosition pLineLabelPosition = pDstClone as ILineLabelPosition; if (pLineLabelPosition != null) { if (radioBtnHorizontal.Checked) { pLineLabelPosition.Horizontal = true; pLineLabelPosition.Parallel = false; pLineLabelPosition.Perpendicular = false; } if (radioBtnPerpendicular.Checked) { pLineLabelPosition.Horizontal = false; pLineLabelPosition.Parallel = false; pLineLabelPosition.Perpendicular = true; } if (radioBtnParallel.Checked) { pLineLabelPosition.Horizontal = false; pLineLabelPosition.Parallel = true; pLineLabelPosition.Perpendicular = false; } } pBasic.LineLabelPosition = pLineLabelPosition; //pBasic.PerpendicularToAngle = true; } else if (featureLayer.FeatureClass.ShapeType == esriGeometryType.esriGeometryPolygon) { pBasic.PolygonPlacementMethod = esriOverposterPolygonPlacementMethod.esriAlwaysHorizontal; } } //赋给labelEngine pLabelEngine.BasicOverposterLayerProperties = pBasic as IBasicOverposterLayerProperties; IAnnotateLayerProperties pAnnoLayerP = (IAnnotateLayerProperties)pLabelEngine; pAnnoLayerP.DisplayAnnotation = chklabel.Checked; pAnnoLayerP.FeatureLayer = pGeoLayer; pAnnoLayerP.LabelWhichFeatures = esriLabelWhichFeatures.esriVisibleFeatures; pAnnoLayerP.WhereClause = ""; pGeoLayer.AnnotationProperties.Add(pAnnoLayerP); pGeoLayer.DisplayAnnotation = chklabel.Checked; pMapControl.ActiveView.Refresh(); //if (pTocControl.Buddy == pMapControl.Object) //{ // pTocControl.SetBuddyControl(pMapControl); // pMapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); // pTocControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); //} //else if (pTocControl.Buddy.Equals(pSceneControl.Object)) //{ // pTocControl.SetBuddyControl(pSceneControl); // IActiveView pActiveView = pSceneControl.Scene as IActiveView; // pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, pLayer, null); // pTocControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); //} } catch (System.Exception ex) { } }