Transfer from CHANYINHELV source arcengine Layer Callout (Based on field, angle)
Today I made an AE to control whether the layer is showing labels, and which field as the label's field, and which field is the angle of the callout, write the code down for later use.
Public voidEnablefeaturelayerlabel (Ifeaturelayer Pfeaturelayer,stringSlablefield, Irgbcolor Prgb,intSizestringAnglefield) { //determine if the layer is empty if(Pfeaturelayer = =NULL) return; Igeofeaturelayer Pgeofeaturelayer=(Igeofeaturelayer) Pfeaturelayer; Iannotatelayerpropertiescollection pannolayerpropscollection; Pannolayerpropscollection=pgeofeaturelayer.annotationproperties; Pannolayerpropscollection.clear (); //stdole. IFontDisp Pfont; //FontItextsymbol Ptextsymbol; //pfont.name = "new song body"; //pfont.size = 9; //font Color Not specified is black by default if(Prgb = =NULL) {Prgb=NewRgbcolorclass (); Prgb.red=0; Prgb.green=0; Prgb.blue=0; } Ptextsymbol=NewTextsymbolclass (); Ptextsymbol.color=(icolor) Prgb; Ptextsymbol.size= size;//Dimension SizeIBasicOverposterLayerProperties4 PBASICOVERPOSTERLAYERPROPS4=NewBasicoverposterlayerpropertiesclass (); Switch(PFeaturelayer.FeatureClass.ShapeType)//Judging layer Types { CaseESRI. ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon:pBasicOverposterlayerProps4.FeatureType=Esribasicoverposterfeaturetype.esrioverposterpolygon; Break; CaseESRI. ArcGIS.Geometry.esriGeometryType.esriGeometryPoint:pBasicOverposterlayerProps4.FeatureType=Esribasicoverposterfeaturetype.esrioverposterpoint; Break; CaseESRI. ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline:pBasicOverposterlayerProps4.FeatureType=Esribasicoverposterfeaturetype.esrioverposterpolyline; Break; } Pbasicoverposterlayerprops4.pointplacementmethod=Esrioverposterpointplacementmethod.esrirotationfield; Pbasicoverposterlayerprops4.rotationfield=Anglefield; Ilabelenginelayerproperties Plabelenginelayerprops=NewLabelenginelayerpropertiesclass (); Plabelenginelayerprops.expression="["+ Slablefield +"]"; Plabelenginelayerprops.symbol=Ptextsymbol; Plabelenginelayerprops.basicoverposterlayerproperties= PBASICOVERPOSTERLAYERPROPS4 asibasicoverposterlayerproperties; Pannolayerpropscollection.add ((iannotatelayerproperties) plabelenginelayerprops); Pgeofeaturelayer.displayannotation=true;//It is important that you set//AxMapControl1.ActiveView.PartialRefresh (esriviewdrawphase.esriviewbackground, NULL, NULL);} }
Arcengine Layer Callout (Based on field, angle)