Provides access to events that occur when the state of the dynamic display changes.
|AfterDynamicDraw||Fired after the specified phase is drawn.|
|BeforeDynamicDraw||Fired before the specified phase is drawn.|
|DynamicMapFinished||Fired when the dynamic map finishes.|
|DynamicMapStarted||Fired when the dynamic map starts.|
CoClasses that implement IDynamicMapEvents
|CoClasses and Classes||Description|
|ControlsMapRoamTool (esriControls)||Click the mouse left button to start or finish roaming, move the mouse to change roaming direction and speed.|
|DynamicMapEvents (esriCarto)||Map events. Note: this class only provides access to the IDynamicMapEvents outbound interface.|
|Map (esriCarto)||A container for the display and manipulation of map data.|
|TADynamicDisplayRefreshController (esriTrackingAnalyst)||Manages all dynamic updates to all of ArcMap's maps, both in the map view and the page layout view.|
The Dynamic Map is an active Display, therefore the dynamic Map will get redrawn in events like - dirty dynamic layer, visible bounds change, refresh method call, new tile loaded, etc. In any of these cases, the BeforeDynamicDraw and AfterDynamicDraw events will get fired after all of the Layers (including Graphic Layers) will get drawn.
The difference between the BeforeDynamicDraw\AfterDynamicDraw and the DynamicMapStarted\DynamicMapFinished events, is that the BeforeDynamicDraw\AfterDynamicDraw Events will get fired only when the Display (Dynamic Map) needs to be redrawn, while the DynamicMapStarted\DynamicMapFinished events will get fired on every Dynamic Map heart beat (while the Dynamic Map is Enabled), even when the display is not redrawn.
The BeforeDynamicDraw\AfterDynamicDraw events are getting fired with two different phases (enum esriDynamicMapDrawPhase). Each phase has a different meaning and usage:
– This is getting fired on each dynamic cycle that the
Dynamic Map re-renders the scene. The event is fired just before
the first layer is rendered, and AfterDynamicDraw event is fired
just after the last layer (including any Graphic Layer) is
In this context, there is an active OpenGL Rendering context (with a preset rendering volume, viewport, etc).
Use this context to plug-in any custom dynamic drawings with the DynamicDisplay API as well as with the OpenGL API. This context can be useful in order to draw dynamic elements behind or on top of the Layers and Graphics, which do not need to be associated with a layer.
– When the Dynamic Map is sensing that it needs to fetch
tiles in order to be able to render the scene, the
BeforeDynamicDraw will get fired. When the last missing tile is
available and rendered the AfterDynamicDraw event will get
Note: It is not valid to use the DynamicDisplay API, nor the OpenGL API in this context, since the OpenGL Rendering Context is not fully setup.
Use this context if you need to monitor when the Dynamic Map is still in a process of fetching tiles for rendering the display.