About the Move a graphic along a path in ArcMap Sample
[C#]
MapGraphicTrackExtension.cs
using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; using System.Windows.Forms; using ESRI.ArcGIS.Animation; using ESRI.ArcGIS.ADF; using ESRI.ArcGIS.Carto; using ESRI.ArcGIS.esriSystem; using ESRI.ArcGIS.Geometry; using ESRI.ArcGIS.Display; using ESRI.ArcGIS.Framework; namespace AnimationDeveloperSamples { [Guid("A18921C8-275B-4CDC-B830-C7F8DB1E92EC")] [ClassInterface(ClassInterfaceType.None)] [ProgId("CustomMapAnimation1.MapGraphicTrackExtension")] public class MapGraphicTrackExtension:IMapGraphicTrackExtension,IPersistStream { private IPropertySet propSet; private IPersistStream persist; #region constructor public MapGraphicTrackExtension() { ILineElement traceElement = new LineElementClass(); SetDefaultSymbol(traceElement); //add a tag to the trace line IElementProperties elemProps = (IElementProperties)traceElement; elemProps.Name = "{E63706E1-B13C-4184-8AB8-97F67FA052D4}"; bool showTrace = true; propSet = new PropertySetClass(); propSet.SetProperty("Line Element", traceElement); propSet.SetProperty("Show Trace", showTrace); persist = (IPersistStream)propSet; } #endregion #region IMapGraphicTrackExtension members public ILineElement TraceElement { get { return (ILineElement)propSet.GetProperty("Line Element"); } set { ILineElement temp = value; propSet.SetProperty("Line Element", temp); } } public bool ShowTrace { get { return (bool)propSet.GetProperty("Show Trace"); } set { bool temp = value; propSet.SetProperty("Show Trace", temp); } } public void ClearTrace() { IElement elem = (IElement)propSet.GetProperty("Line Element"); elem.Geometry.SetEmpty(); } #endregion #region IPersistStream Members public void GetSizeMax(out _ULARGE_INTEGER pcbSize) { persist.GetSizeMax(out pcbSize); } public void GetClassID(out Guid pClassID) { pClassID = this.GetType().GUID; } public void Load(IStream pstm) { persist.Load(pstm); } public void IsDirty() { persist.IsDirty(); } public void Save(IStream pstm, int fClearDirty) { persist.Save(pstm, fClearDirty); } #endregion #region private methods private void SetDefaultSymbol(ILineElement elem) { ILineSymbol defaultLineSym = null; String esriStylePath; IStyleGallery styleGallery = new StyleGalleryClass(); IStyleGalleryStorage styleStor = (IStyleGalleryStorage)styleGallery; esriStylePath = styleStor.DefaultStylePath + "ESRI.style"; IEnumStyleGalleryItem styleItems = styleGallery.get_Items("Line Symbols",esriStylePath,"Dashed"); styleItems.Reset(); IStyleGalleryItem styleGalleryItem = styleItems.Next(); while (!(styleGalleryItem == null)) { if (styleGalleryItem.Name == "Dashed 4:4") { defaultLineSym = (ILineSymbol)styleGalleryItem.Item; defaultLineSym.Width = 1.50; IRgbColor rgbColor = new RgbColorClass(); rgbColor.Red = 255; rgbColor.Blue = 0; rgbColor.Green = 0; rgbColor.Transparency = 50; defaultLineSym.Color = rgbColor; break; } else { styleGalleryItem = styleItems.Next(); } } elem.Symbol = defaultLineSym; } #endregion } public interface IMapGraphicTrackExtension { ILineElement TraceElement { get; set; } bool ShowTrace { get; set; } void ClearTrace(); } }
[Visual Basic .NET]
MapGraphicTrackExtension.vb
Imports Microsoft.VisualBasic Imports System Imports System.Collections.Generic Imports System.Text Imports System.Runtime.InteropServices Imports System.Windows.Forms Imports ESRI.ArcGIS.Animation Imports ESRI.ArcGIS.ADF Imports ESRI.ArcGIS.Carto Imports ESRI.ArcGIS.esriSystem Imports ESRI.ArcGIS.Geometry Imports ESRI.ArcGIS.Display Imports ESRI.ArcGIS.Framework <Guid("829D5FE5-D6FB-44FE-8729-FC9454D8B171"), ClassInterface(ClassInterfaceType.None), ProgId("AnimationDeveloperSamples.MapGraphicTrackExtension")> _ Public Class MapGraphicTrackExtension : Implements IPersistStream, IMapGraphicTrackExtension Private propSet As IPropertySet Private persist As IPersistStream #Region "constructor" Public Sub New() Dim traceElem As ILineElement = New LineElementClass() SetDefaultSymbol(traceElem) 'add a tag to the trace line Dim elemProps As IElementProperties = CType(traceElem, IElementProperties) elemProps.Name = "{E63706E1-B13C-4184-8AB8-97F67FA052D4}" Dim bShowTrace As Boolean = True propSet = New PropertySetClass() propSet.SetProperty("Line Element", traceElem) propSet.SetProperty("Show Trace", bShowTrace) persist = CType(propSet, IPersistStream) End Sub #End Region #Region "IPersistStream Members" Public Sub GetSizeMax(<System.Runtime.InteropServices.Out()> ByRef pcbSize As _ULARGE_INTEGER) Implements IPersistStream.GetSizeMax persist.GetSizeMax(pcbSize) End Sub Public Sub GetClassID(<System.Runtime.InteropServices.Out()> ByRef pClassID As Guid) Implements IPersist.GetClassID pClassID = Me.GetType().GUID End Sub Public Sub GetClassID1(<System.Runtime.InteropServices.Out()> ByRef pClassID As Guid) Implements IPersistStream.GetClassID pClassID = Me.GetType().GUID End Sub Public Sub Load(ByVal pstm As IStream) Implements IPersistStream.Load persist.Load(pstm) End Sub Public Sub IsDirty() Implements IPersistStream.IsDirty persist.IsDirty() End Sub Public Sub Save(ByVal pstm As IStream, ByVal fClearDirty As Integer) Implements IPersistStream.Save persist.Save(pstm, fClearDirty) End Sub #End Region #Region "IMapGraphicTrackExtension members" Public Property TraceElement() As ILineElement Implements IMapGraphicTrackExtension.TraceElement Get Return CType(propSet.GetProperty("Line Element"), ILineElement) End Get Set(ByVal value As ILineElement) Dim temp As ILineElement = CType(value, ILineElement) propSet.SetProperty("Line Element", temp) End Set End Property Public Property ShowTrace() As Boolean Implements IMapGraphicTrackExtension.ShowTrace Get Return CBool(propSet.GetProperty("Show Trace")) End Get Set(ByVal value As Boolean) Dim temp As Boolean = value propSet.SetProperty("Show Trace", temp) End Set End Property Public Sub ClearTrace() Implements IMapGraphicTrackExtension.ClearTrace Dim elem As IElement = CType(propSet.GetProperty("Line Element"), IElement) elem.Geometry.SetEmpty() End Sub #End Region #Region "private methods" Private Sub SetDefaultSymbol(ByVal elem As ILineElement) Dim defaultLineSym As ILineSymbol = Nothing Dim esriStylePath As String Dim styleGallery As IStyleGallery = New StyleGalleryClass() Dim styleStor As IStyleGalleryStorage = CType(styleGallery, IStyleGalleryStorage) esriStylePath = styleStor.DefaultStylePath & "ESRI.style" Dim styleItems As IEnumStyleGalleryItem = styleGallery.Items("Line Symbols", esriStylePath, "Dashed") styleItems.Reset() Dim styleGalleryItem As IStyleGalleryItem = styleItems.Next() Do While Not (styleGalleryItem Is Nothing) If styleGalleryItem.Name = "Dashed 4:4" Then defaultLineSym = CType(styleGalleryItem.Item, ILineSymbol) defaultLineSym.Width = 1.5 Dim rgbColor As IRgbColor = New RgbColorClass() rgbColor.Red = 255 rgbColor.Blue = 0 rgbColor.Green = 0 rgbColor.Transparency = 50 defaultLineSym.Color = rgbColor Exit Do Else styleGalleryItem = styleItems.Next() End If Loop elem.Symbol = defaultLineSym End Sub #End Region End Class Public Interface IMapGraphicTrackExtension Property TraceElement() As ILineElement Property ShowTrace() As Boolean Sub ClearTrace() End Interface