/// <summary> /// 序列化图层的标注属性 /// </summary> /// <param name="lyr">矢量图层</param> /// <returns>byte[],包括标注的字体样式和位置</returns> public static byte[] SerializeLabelProperty(IGeoFeatureLayer lyr) { try { IXMLStream pStream = new XMLStreamClass(); IXMLWriter pWriter = new XMLWriterClass(); pWriter.WriteTo((IStream)pStream); IXMLSerializer pSerializer = new XMLSerializerClass(); ESRI.ArcGIS.Carto.IAnnotateLayerProperties pAnno; IElementCollection pEle; IElementCollection pEle2; lyr.AnnotationProperties.QueryItem(0, out pAnno, out pEle, out pEle2); ILabelEngineLayerProperties pLabelPro = pAnno as ILabelEngineLayerProperties; ESRI.ArcGIS.Carto.IBasicOverposterLayerProperties pBasicLyrProp = pLabelPro.BasicOverposterLayerProperties; ESRI.ArcGIS.Display.IFormattedTextSymbol pFormatSymbol = pLabelPro.Symbol as ESRI.ArcGIS.Display.IFormattedTextSymbol; IPropertySet propertySet = new PropertySetClass(); propertySet.SetProperty("BasicOverposterLayerProperties", pBasicLyrProp); propertySet.SetProperty("FormattedTextSymbol", pFormatSymbol); pSerializer.WriteObject(pWriter, null, null, "", "", propertySet); return pStream.SaveToBytes(); } catch { return null; } return null; } 图层的标注属性,除了字段值及样式以外,还有字体的旋转角度等,使用序列化的方式直接保存起来, 方便使用,可能需要以下引用: using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Windows.Forms; using System.Drawing; using ESRI.ArcGIS.Controls; using ESRI.ArcGIS.esriSystem; using ESRI.ArcGIS.Carto; using ESRI.ArcGIS.Geodatabase; using ESRI.ArcGIS.Display; using ESRI.ArcGIS.Geometry; using ESRI.ArcGIS.DataSourcesRaster; using ESRI.ArcGIS.DataSourcesFile; using ESRI.ArcGIS.DataSourcesRasterUI; using Pacia.Map.Engine; using ESRI.ArcGIS.Display;