ArcEngine实现类似CAD中的扯旗标注,其实就是给textElemen的样式赋一个背景。ILineCallout可以实现扯旗效果。
//创建背景
IRgbColor pRgbClr = new RgbColorClass();
pRgbClr.Red = 0;
pRgbClr.Blue = 0;
pRgbClr.Green = 0;
ISimpleLineSymbol ldrLine = new SimpleLineSymbol();
ldrLine.Color = pRgbClr;
ldrLine.Width = 1;
ISimpleLineSymbol accentBar = new SimpleLineSymbol();
accentBar.Color = pRgbClr;
ILineCallout lineCallout = new LineCallout();
lineCallout.Style = esriLineCalloutStyle.esriLCSUnderline;//底下的下划线
lineCallout.Border = null;
lineCallout.AccentBar = accentBar; //左边的竖直线
lineCallout.LeaderLine = ldrLine; //牵引线
IPoint pPoint = new ESRI.ArcGIS.Geometry.PointClass();
pPoint.X = x;
pPoint.Y = y;
lineCallout.AnchorPoint = pPoint;
//创建文字标注
IFormattedTextSymbol pTextSymbol = new TextSymbolClass();
ILineCallout lineCallout = CreateLineCallout(x, y);
pTextSymbol.Color = color;
pTextSymbol.Size = 10;
ITextBackground pTextBackground = lineCallout as ITextBackground;
pTextSymbol.Background = pTextBackground; //赋背景
pTextSymbol.HorizontalAlignment = esriTextHorizontalAlignment.esriTHALeft;
ITextElement textElement = pTElement as ITextElement;
textElement.Symbol = pTextSymbol;
下面是效果: