In this topic
To cause a display to redraw, the invalidate routine must be called; however, most clients never use IScreenDisplay.Invalidate. If there is a view being used in your application—for example, the Map or PageLayout class—the view should be used for refreshing the screen; for example, Refresh and PartialRefresh. The view manages the display's caches and knows the best way to carry out invalidation. Make sure PartialRefresh is called using the most specific arguments possible. Also, only call Refresh when absolutely necessary, since this is usually a time-consuming operation.
To allow views (Map and PageLayout) to completely manage display caching, all invalidation must go through the view. Calling IActiveView.Refresh always draws everything, which is very inefficient. The PartialRefresh method should be used whenever possible. It lets you specify the part of the view to redraw and allows the view to work with display caches in a way that makes drawing quick and efficient.
The following table shows the arguments for PartialRefresh and their effect on the view—Map or PageLayout class—in which they are called:
Draw phase
|
Map
|
PageLayout
|
esriViewBackground
|
unused
|
page/snap grid
|
esriViewGeography
|
layers
|
unused
|
esriViewGeoSelection
|
feature selection
|
unused
|
esriViewGraphics
|
labels/graphics
|
graphics
|
esriViewGraphicSelection
|
graphic selection
|
element selection
|
esriViewForeground
|
unused
|
map guides
|
The following code example shows some calls to the PartialRefresh method; note the use of optional arguments:
[Java]
//Refresh a single Layer
pMap.partialRefresh(esriViewDrawPhase.esriViewGeography, pLayer, null);
//Refresh All Layers
pMap.partialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
//Refresh Selection
pMap.partialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, null);
//Refresh Labels
pMap.partialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);
//Refresh a single Element
pLayout.partialRefresh(esriViewDrawPhase.esriViewGraphics, pElement, null);
//Refresh All Elements
pLayout.partialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);
//Refresh Selection
pLayout.partialRefresh(esriViewDrawPhase.esriViewGraphicSelection, null, null);
Invalidating any phase will cause the recording cache to be invalidated. To force a redraw from the recording cache, use the call in the following code example:
pScreenDisplay.invalidate(null, false, esriScreenCache.esriNoScreenCache);
See Also:
How to add display cachingDevelopment licensing | Deployment licensing |
---|---|
ArcView | ArcView |
ArcEditor | ArcEditor |
ArcInfo | ArcInfo |
Engine Developer Kit | Engine Runtime |