About the Creating a toolbar of globe tools Sample
[C#]
TextElement.cs
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Analyst3D;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.GlobeCore;
using ESRI.ArcGIS.ADF.COMSupport;
using System.Drawing;
using System;
namespace GlobeGraphicsToolbar
{
public class TextElement
{
private IElement _element;
private IGlobeGraphicsElementProperties _elementProperties;
public TextElement(IGeometry geometry, string text, float size)
{
_element = GetElement(geometry, text, size);
_elementProperties = GetElementProperties();
}
private IElement GetElement(IGeometry geometry, string text, float size)
{
IElement element;
ITextElement textElement = new TextElementClass();
element = textElement as IElement;
ITextSymbol textSymbol = new TextSymbolClass();
textSymbol.Color = ColorSelection.GetColor();
textSymbol.Size = Convert.ToDouble(size);
textSymbol.Font = GetIFontDisp(size);
textSymbol.HorizontalAlignment = GetHorizontalAlignment();
textSymbol.VerticalAlignment = GetVerticalAlignment();
element.Geometry = geometry;
textElement.Symbol = textSymbol;
textElement.Text = text;
return element;
}
private stdole.IFontDisp GetIFontDisp(float size)
{
const string FontFamilyName = "Arial";
const FontStyle FontStyle = FontStyle.Bold;
Font font = new Font(FontFamilyName, size, FontStyle);
return OLE.GetIFontDispFromFont(font) as stdole.IFontDisp;
}
private esriTextHorizontalAlignment GetHorizontalAlignment()
{
const esriTextHorizontalAlignment HorizontalAlignment = esriTextHorizontalAlignment.esriTHACenter;
return HorizontalAlignment;
}
private esriTextVerticalAlignment GetVerticalAlignment()
{
const esriTextVerticalAlignment VerticalAlignment = esriTextVerticalAlignment.esriTVABaseline;
return VerticalAlignment;
}
private IGlobeGraphicsElementProperties GetElementProperties()
{
IGlobeGraphicsElementProperties elementProperties = new GlobeGraphicsElementPropertiesClass();
elementProperties.FixedScreenSize = true;
elementProperties.DrapeElement = true;
return elementProperties;
}
public IElement Element
{
get
{
return _element;
}
}
public IGlobeGraphicsElementProperties ElementProperties
{
get
{
return _elementProperties;
}
}
}
}
[Visual Basic .NET]
TextElement.vb
Imports Microsoft.VisualBasic
Imports ESRI.ArcGIS.Geometry
Imports ESRI.ArcGIS.Carto
Imports ESRI.ArcGIS.Analyst3D
Imports ESRI.ArcGIS.Display
Imports ESRI.ArcGIS.esriSystem
Imports ESRI.ArcGIS.GlobeCore
Imports ESRI.ArcGIS.ADF.COMSupport
Imports System.Drawing
Imports System
Namespace GlobeGraphicsToolbar
Public Class TextElement
Private _element As IElement
Private _elementProperties As IGlobeGraphicsElementProperties
Public Sub New(ByVal geometry As IGeometry, ByVal text As String, ByVal size As Single)
_element = GetElement(geometry, text, size)
_elementProperties = GetElementProperties()
End Sub
Private Function GetElement(ByVal geometry As IGeometry, ByVal text As String, ByVal size As Single) As IElement
Dim element As IElement
Dim textElement As ITextElement = New TextElementClass()
element = TryCast(textElement, IElement)
Dim textSymbol As ITextSymbol = New TextSymbolClass()
textSymbol.Color = ColorSelection.GetColor()
textSymbol.Size = Convert.ToDouble(size)
textSymbol.Font = GetIFontDisp(size)
textSymbol.HorizontalAlignment = GetHorizontalAlignment()
textSymbol.VerticalAlignment = GetVerticalAlignment()
element.Geometry = geometry
textElement.Symbol = textSymbol
textElement.Text = text
Return element
End Function
Private Function GetIFontDisp(ByVal size As Single) As stdole.IFontDisp
Const FontFamilyName As String = "Arial"
Const FontStyle As FontStyle = FontStyle.Bold
Dim font As New Font(FontFamilyName, size, FontStyle)
Return TryCast(OLE.GetIFontDispFromFont(font), stdole.IFontDisp)
End Function
Private Function GetHorizontalAlignment() As ESRI.ArcGIS.Display.esriTextHorizontalAlignment
Const HorizontalAlignment As ESRI.ArcGIS.Display.esriTextHorizontalAlignment = ESRI.ArcGIS.Display.esriTextHorizontalAlignment.esriTHACenter
Return HorizontalAlignment
End Function
Private Function GetVerticalAlignment() As ESRI.ArcGIS.Display.esriTextVerticalAlignment
Const VerticalAlignment As ESRI.ArcGIS.Display.esriTextVerticalAlignment = ESRI.ArcGIS.Display.esriTextVerticalAlignment.esriTVABaseline
Return VerticalAlignment
End Function
Private Function GetElementProperties() As IGlobeGraphicsElementProperties
Dim elementProperties As IGlobeGraphicsElementProperties = New GlobeGraphicsElementPropertiesClass()
elementProperties.FixedScreenSize = True
elementProperties.DrapeElement = True
Return elementProperties
End Function
Public ReadOnly Property Element() As IElement
Get
Return _element
End Get
End Property
Public ReadOnly Property ElementProperties() As IGlobeGraphicsElementProperties
Get
Return _elementProperties
End Get
End Property
End Class
End Namespace