创建文本注记TextElement

时间:2021-02-08 23:12:49

1.创建一个字体

/// <summary>

/// 字体设置

/// </summary>

/// <param name="size">The size.</param>

/// <param name="fontname">The fontname.</param>

/// <returns>

/// IFontDisp

/// </returns>

public static stdole.IFontDisp GetIFontDisp(float size, string fontname)

{

string fontFamilyName = fontname;

FontStyle fontStyle = FontStyle.Regular;

Font font = new Font(fontFamilyName, size, fontStyle);

return OLE.GetIFontDispFromFont(font) as stdole.IFontDisp;

}

2.创建文本注记样式

/// <summary>

///文本注记样式

/// </summary>

/// <param name="geometry">标注点,一个点即可</param>

/// <param name="text">标注内容</param>

/// <returns>

/// IElement

/// </returns>

public static ITextSymbol GetTextElement(IGeometry geometry, string text)

{

ITextSymbol textSymbol = new TextSymbolClass();

textSymbol.Color = ColorCustom(0, 0, 0);

////不可以直接修改textSymbol.Font.Bold等属性,无效

stdole.IFontDisp font =  GetIFontDisp(9F, "宋体");

font .Bold = false;

font .Italic = false;

font .Strikethrough = false;

font .Underline = false;

textSymbol.Font = font;

textSymbol.HorizontalAlignment = esriTextHorizontalAlignment.esriTHALeft; ////水平

textSymbol.VerticalAlignment = esriTextVerticalAlignment.esriTVATop; ; ////垂直

return textSymbol ;

}

3.创建文本注记

ITextElement textElement = new TextElementClass();

textElement.ScaleText = true;

textElement.Symbol = GetTextElement();

textElement.Text = text;

IElement element = textElement as IElement;

element.Geometry = geometry;