com.esri.arcgis.display
Interface IScreenDisplay

All Superinterfaces:
IDisplay, Serializable
All Known Subinterfaces:
IAppDisplay
All Known Implementing Classes:
GlobeDisplay, IAppDisplayProxy, IScreenDisplayProxy, SceneGraph, ScreenDisplay

public interface IScreenDisplay
extends IDisplay, Serializable

Provides access to members that control Screen Display.

Superseded By

IScreenDisplay2

When To Use

The IScreenDisplay interface manages the display attributes of a screen. IScreenDisplay also handles other issues specific to windows including the backing store, scrolling, and invalidation.

Two objects currently implement IScreenDisplay, AppDisplay and ScreenDisplay. Each object's implementation of IScreenDisplay is slightly different; look at the help for a particular member for more details.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux


Method Summary
 short addCache()
          Creates a new cache and return its ID.
 void doScroll(int xDelta, int yDelta, boolean updateScreen)
          Scrolls the screen by the specified amount.
 void drawCache(int hDC, short index, tagRECT deviceRect, tagRECT cacheRect)
          Draws the specified screen cache to the specified window device context.
 short getActiveCache()
          Screen cache where drawing occurs.
 short getCacheCount()
          Number of screen caches.
 int getCacheMemDC(short index)
          Memory device context for the specified screen cache.
 ITrackCancel getCancelTracker()
          Cancel tracker that is associated with the display.
 int getHWnd()
          Associated window handle.
 int getWindowDC()
          Device context for the associated window.
 void invalidate(IEnvelope rect, boolean erase, short cacheIndex)
          Cause the specified area of the specified cache to redraw.
 boolean isCacheDirty(short cacheIndex)
          Indicates if the specified cache needs refreshing.
 boolean isFirstCacheTransparent()
          Indicates if the bottom cache is transparent.
 boolean isFramed()
          Indicates if drawing occurs in a frame rather than on the whole window.
 boolean isScaleContents()
          Indicates if the contents of the screen scale when a resize occurs.
 boolean isSuppressResize()
          Indicates if display resizing is suppressed.
 boolean isUseScrollbars()
          Indicates if scrollbars should appear.
 void panMoveTo(IPoint mouseLocation)
          Pans to a new point.
 void panStart(IPoint mouseLocation)
          Prepares display for panning.
 IEnvelope panStop()
          Stops panning and returns new visible bounds.
 void removeAllCaches()
          Removes all caches.
 void removeCache(short cacheID)
          Removes the specified cache.
 void rotateMoveTo(IPoint pPoint)
          Rotates to new point.
 void rotateStart(IPoint mousePt, IPoint centerPt)
          Prepares display for rotating.
 double rotateStop()
          Stops rotating and returns new angle.
 void rotateTimer()
          Draws the rotated display.
 void setActiveCache(short index)
          Screen cache where drawing occurs.
 void setCancelTrackerByRef(ITrackCancel cancelTracker)
          Cancel tracker that is associated with the display.
 void setHWnd(int hWnd)
          Associated window handle.
 void setIsFirstCacheTransparent(boolean flag)
          Indicates if the bottom cache is transparent.
 void setIsFramed(boolean flag)
          Indicates if drawing occurs in a frame rather than on the whole window.
 void setScaleContents(boolean flag)
          Indicates if the contents of the screen scale when a resize occurs.
 void setScrollbarHandles(int hWndHorzScrollbar, int hWndVertScrollbar)
          Optionally specify application supplied scrollbars.
 void setSuppressResize(boolean suppressResize)
          Indicates if display resizing is suppressed.
 void setUseScrollbars(boolean flag)
          Indicates if scrollbars should appear.
 void startRecording()
          Starts recording all output to the recording cache.
 void stopRecording()
          Stops recording to the recording cache.
 void trackPan()
          Interactively pans the screen.
 void trackRotate()
          Interactively rotates the screen.
 void updateWindow()
          Forces a redraw.
 
Methods inherited from interface com.esri.arcgis.display.IDisplay
drawMultipoint, drawPoint, drawPolygon, drawPolyline, drawRectangle, drawText, finishDrawing, getClipEnvelope, getClipEnvelopes, getClipGeometry, getDisplayTransformation, getFilter, getHDC, getHPalette, getIlluminationProps, isSuppressEvents, progress, setClipGeometry, setDisplayTransformation, setFilterByRef, setHPalette, setIlluminationProps, setSuppressEvents, setSymbol, startDrawing
 

Method Detail

setHWnd

void setHWnd(int hWnd)
             throws IOException,
                    AutomationException
Associated window handle.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Parameters:
hWnd - The hWnd (A COM typedef) (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getHWnd

int getHWnd()
            throws IOException,
                   AutomationException
Associated window handle.

Remarks

The hWnd property tells ScreenDisplay objects which window to draw in. When a new view (a Map or PageLayout) is created and activated (IActiveView::Activate), a related ScreenDisplay is created and its hWnd is set to that of the main application. Data windows, such as the MapInsetWindow, also have a related ScreenDisplay object and in this case the ScreenDisplay's hWnd property is set so that all drawing will occur in the data window and not the main application window.

Several Windows API calls require an hWnd in order to perform their operation; this property provides the hWnd for the ScreenDisplay object you are currently working with. For example, several of ArcMap's zoom commands use the Windows API function 'GetClientRect' to get the coordinates of the main window's client area. GetClientRect requires the hWnd of the window of interest and in ArcMap's case, IScreenDisplay::hWnd holds this.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Returns:
The hWnd (A COM typedef)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getWindowDC

int getWindowDC()
                throws IOException,
                       AutomationException
Device context for the associated window. Only use this between calls to StartDrawing and FinishDrawing.

Remarks

This property is a Windows operating environment device context handle. The Windows operating environment manages the system display by assigning a device context for each window in the application. You can use the WindowDC property to refer to the handle for an object's device context.

This property does not provide a value to pass to IDisplay::StartDrawing. Instead, call IDisplay::StartDrawing with a value of 0 for the hDC as this will automatically use the Windows API function GetDC to populate IScreenDisplay::WindowDC with the hDC of the main display and drawing will occur there.

The value of the WindowDC property can change while an application runs, so do not store the value in a variable; instead, use the WindowDC property each time you need it.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Returns:
The hDC (A COM typedef)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

addCache

short addCache()
               throws IOException,
                      AutomationException
Creates a new cache and return its ID. The ID can be specified to StartDrawing to direct output to the cache. It can also be used with a number of other methods such as DrawCache and Invalidate.

Remarks

ScreenDisplay objects make it possible for clients to create any number of caches. A cache is an off screen bitmap representing the application's window. Instead of drawing directly to the screen, graphics are drawn into caches, then the caches are drawn on the screen. When the application's window is obscured and requires redrawing, it done so from the caches instead of from a database. In this way, caches improve drawing performance - bitmap rendering is faster than reading and displaying data from a database.

In general, a Map object creates three caches: one for all the layers, another if there are annotation or graphics, and a third cache if there is a feature selection. A layer can create its own private cache if it sets ILayer::Cached equal to TRUE. In this case, the Map will create a separate cache for the layer and groups the layers above and below it into different caches.

The AppDisplay object has no implementation for this method.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Returns:
The cacheID
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

removeCache

void removeCache(short cacheID)
                 throws IOException,
                        AutomationException
Removes the specified cache.

Remarks

Use this method to remove a cache that is no longer needed. For example, calling the IActiveView::PartialRefresh method on a Map object will delete the Map's selection cache if one exists and there are no features selected.

The AppDisplay object has no implementation for this method.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Parameters:
cacheID - The cacheID (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getCacheCount

short getCacheCount()
                    throws IOException,
                           AutomationException
Number of screen caches.

Remarks

Use this property to loop through all of the available screen caches. For example, if you Invalidate using esriAllScreenCaches, this property is used to loop through all of the caches to invalidate each one.

The AppDisplay object has no implementation for this method.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Returns:
The count
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

removeAllCaches

void removeAllCaches()
                     throws IOException,
                            AutomationException
Removes all caches.

Remarks

Use this property to clear all of the screen caches the current object has. For example, when a Map is deactivated (IActiveView::Deactivate) it uses this property to remove all of its caches.

The AppDisplay object has no implementation for this method.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getCacheMemDC

int getCacheMemDC(short index)
                  throws IOException,
                         AutomationException
Memory device context for the specified screen cache.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Parameters:
index - The index (in)
Returns:
The hDC (A COM typedef)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setActiveCache

void setActiveCache(short index)
                    throws IOException,
                           AutomationException
Screen cache where drawing occurs. Use rarely. Change cache inside StartDrawing/FinishDrawing sequence.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Parameters:
index - The index (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getActiveCache

short getActiveCache()
                     throws IOException,
                            AutomationException
Screen cache where drawing occurs. Use rarely. Change cache inside StartDrawing/FinishDrawing sequence.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Returns:
The index
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setIsFirstCacheTransparent

void setIsFirstCacheTransparent(boolean flag)
                                throws IOException,
                                       AutomationException
Indicates if the bottom cache is transparent.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Parameters:
flag - The flag (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isFirstCacheTransparent

boolean isFirstCacheTransparent()
                                throws IOException,
                                       AutomationException
Indicates if the bottom cache is transparent.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Returns:
The flag
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.
See Also:
IScreenDisplay.isFramed()

startRecording

void startRecording()
                    throws IOException,
                           AutomationException
Starts recording all output to the recording cache.

Remarks

In addition to the caches clients create, the ScreenDisplay object also provides a recording cache that accumulates all drawing that happens on the display. This recording cache is used to redraw the application when the application is moved or exposed or when drawing rubber banding.

Note, StartRecording and StopRecording are exposed for developers creating custom applications that draw from multiple caches and need to refresh quickly. If you are working with ArcMap or even the Map object, leave all cache management up to the Map.

Use StartRecording to let the display know exactly what to record. Use DrawCache(esriScreenRecording) to display the recording cache. Use CacheMemDC(esriScreenRecording) to get a handle to the memory device context for the recording bitmap.

The following C++ code excerpt is a drawing sequence example that uses StartRecording.

VARIANT_BOOL isCacheDirty;

m_ipScreen->IsCacheDirty(esriScreenRecording, &isCacheDirty);



if (isCacheDirty) // draw from scratch

{

  m_ipScreen->StartRecording();

  m_ipScreen->StartDrawing((OLE_HANDLE)hPaintDC, esriNoScreenCache);

  DrawContents();

  m_ipScreen->FinishDrawing();

  m_ipScreen->StopRecording();

}

  else // draw from offscreen bitmap

{

  m_ipScreen->DrawCache((OLE_HANDLE)hPaintDC, esriScreenRecording, 0, 0);

}

Example:

The following java code gives you an example drawing sequence.

IScreenDisplay pScreen;

        boolean isCacheDirty = pScreen.isCacheDirty(esriScreenRecording);

        if (isCacheDirty) // draw from scratch

        {

          IDisplay pIDisplay = new IDisplayProxy(pScreen); 

          pScreen.startRecording();

          pIDisplay.startDrawing((int)hPaintDC, esriNoScreenCache);

          DrawContents();

          pScreen.finishDrawing();

          pScreen.stopRecording();

        } else // draw from offscreen bitmap

        {

          pScreen.drawCache((int)hPaintDC, esriScreenRecording, 0, 0);

        }

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

stopRecording

void stopRecording()
                   throws IOException,
                          AutomationException
Stops recording to the recording cache.

Remarks

In addition to the caches clients create, the ScreenDisplay object also provides a recording cache that accumulates all drawing that happens on the display. This recording cache is used to redraw the application when the application is moved or exposed or when drawing rubber banding.

Note, StartRecording and StopRecording are exposed for developers creating custom applications that draw from multiple caches and need to refresh quickly. If you are working with ArcMap or even the Map object, leave all cache management up to the Map.

Use StartRecording to let the display know exactly what to record. Use DrawCache(esriScreenRecording) to display the recording cache. Use CacheMemDC(esriScreenRecording) to get a handle to the memory device context for the recording bitmap.

The following C++ code excerpt is a drawing sequence example that uses StartRecording.

VARIANT_BOOL isCacheDirty;

m_ipScreen->IsCacheDirty(esriScreenRecording, &isCacheDirty);



if (isCacheDirty) // draw from scratch

{

  m_ipScreen->StartRecording();

  m_ipScreen->StartDrawing((OLE_HANDLE)hPaintDC, esriNoScreenCache);

  DrawContents();

  m_ipScreen->FinishDrawing();

  m_ipScreen->StopRecording();

}

  else // draw from offscreen bitmap

{

  m_ipScreen->DrawCache((OLE_HANDLE)hPaintDC, esriScreenRecording, 0, 0);

}

Example:

The following java code gives you an example drawing sequence.

IScreenDisplay pScreen;

        boolean isCacheDirty = pScreen.isCacheDirty(esriScreenRecording);

        if (isCacheDirty) // draw from scratch

        {

          IDisplay pIDisplay = new IDisplayProxy(pScreen); 

          pScreen.startRecording();

          pIDisplay.startDrawing((int)hPaintDC, esriNoScreenCache);

          DrawContents();

          pScreen.finishDrawing();

          pScreen.stopRecording();

        } else // draw from offscreen bitmap

        {

          pScreen.drawCache((int)hPaintDC, esriScreenRecording, 0, 0);

        }

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setUseScrollbars

void setUseScrollbars(boolean flag)
                      throws IOException,
                             AutomationException
Indicates if scrollbars should appear.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Parameters:
flag - The flag (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isUseScrollbars

boolean isUseScrollbars()
                        throws IOException,
                               AutomationException
Indicates if scrollbars should appear.

Remarks

IActiveView::ShowScrollBars redirects all its calls to this property.

Changes to this property are not reflected until the active view changes. For example, when in layout view in ArcMap, programmatically changing the PageLayout to not show its scrollbars will have no effect until the next time the active view is set to the PageLayout; calling IActiveView::Refresh has no effect.

ArcMap uses this property to hide the Map's scroll bars when in layout view. Programmatically trying to display a Map's scroll bar in layout view will have no effect; for Map's this setting is only honored in data view and again it requires an active view change before the setting is reflected in the applications window.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Returns:
The flag
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setScrollbarHandles

void setScrollbarHandles(int hWndHorzScrollbar,
                         int hWndVertScrollbar)
                         throws IOException,
                                AutomationException
Optionally specify application supplied scrollbars.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Parameters:
hWndHorzScrollbar - The hWndHorzScrollbar (A COM typedef) (in)
hWndVertScrollbar - The hWndVertScrollbar (A COM typedef) (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setScaleContents

void setScaleContents(boolean flag)
                      throws IOException,
                             AutomationException
Indicates if the contents of the screen scale when a resize occurs. True means scale contents to fit new window size. False means contents stays the same with more or less of it showing.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Parameters:
flag - The flag (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isScaleContents

boolean isScaleContents()
                        throws IOException,
                               AutomationException
Indicates if the contents of the screen scale when a resize occurs. True means scale contents to fit new window size. False means contents stays the same with more or less of it showing.

Remarks

If a Map's ScaleContents property is set to TRUE, when its display is resized, the area shown stays the same and the scale changes. When set to FALSE, the scale of the Map stays the same and the area shown changes.

The PageLayout object works similarly. If set to TRUE, the contents are stretched when the display is resized. The scale of all maps changes. When set to FALSE, the page remains the same size.

In ArcMap, on the Tools/Options menu, there are check boxes for controlling this property for the data and layout view.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Returns:
The flag
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setSuppressResize

void setSuppressResize(boolean suppressResize)
                       throws IOException,
                              AutomationException
Indicates if display resizing is suppressed. True means the display doesn't resize with the window. False ensures that the display is the same size as the window.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Parameters:
suppressResize - The suppressResize (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isSuppressResize

boolean isSuppressResize()
                         throws IOException,
                                AutomationException
Indicates if display resizing is suppressed. True means the display doesn't resize with the window. False ensures that the display is the same size as the window.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Returns:
The suppressResize
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isFramed

boolean isFramed()
                 throws IOException,
                        AutomationException
Indicates if drawing occurs in a frame rather than on the whole window.

Remarks

When creating a custom application, if you want the display to take over the window it's drawing in, set IsFramed to FALSE. This will add scrollbars (IScreenDisplay::UseScrollBars = TRUE) as necessary and keeps the device frame in sync with the window extent. Setting IsFramed to TRUE means that the display is drawing on some extent within the window. In this case, it won't show scrollbars and it won't automatically update the device frame.

For example, in the ArcMap application, in layout view where each Map resides inside a separate MapFrame, each Map has it IsFramed property set to TRUE. In data view, the opposite is true, a Map's display fits the entire window; in this view, all Map's have IsFramed set to FALSE, not just the focus map.

The IsFramed property also sets the IsFirstCacheTransparent property. When a Map is drawing in layout view, the PageLayout object has its ScreenDisplay and each Map has its own separate ScreenDisplay. This means that the layout has it's display cache(s) and the maps have their own. If the bottom cache of each map was opaque, you wouldn't be able to see through a map onto layout elements below it. Setting IsFirstCacheTransparent on the maps in layout view lets you see through the maps.

If you are working with Map's inside of ArcMap these settings should not be touched. Only use this property when building a low level application that uses a display to draw on a frame on a window.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Returns:
The flag
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.
See Also:
IScreenDisplay

setIsFramed

void setIsFramed(boolean flag)
                 throws IOException,
                        AutomationException
Indicates if drawing occurs in a frame rather than on the whole window.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Parameters:
flag - The flag (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getCancelTracker

ITrackCancel getCancelTracker()
                              throws IOException,
                                     AutomationException
Cancel tracker that is associated with the display.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Returns:
A reference to a com.esri.arcgis.system.ITrackCancel
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setCancelTrackerByRef

void setCancelTrackerByRef(ITrackCancel cancelTracker)
                           throws IOException,
                                  AutomationException
Cancel tracker that is associated with the display.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Parameters:
cancelTracker - A reference to a com.esri.arcgis.system.ITrackCancel (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

invalidate

void invalidate(IEnvelope rect,
                boolean erase,
                short cacheIndex)
                throws IOException,
                       AutomationException
Cause the specified area of the specified cache to redraw.

Remarks

Use Invalidate to refresh a specific region on the display. For example, if you add a new feature, only the extent of the new feature requires refreshing; the remainder of the display can redraw from cache.

The rect parameter specifies the region to update. Use 'Nothing' in Visual Basic or a zero in C++ to invalidate the entire display.

Erase specifies whether or not the background within the update region is erased when the update region is processed. Usually this is set to TRUE.

CacheIndex controls which cache to update. Use IActiveView::ScreenCacheID to get the cache index for a specific draw phase. The valid draw phases are held in the esriViewDrawPhase enumeration and are as follows:

0 - esriViewNone
1 - esriViewBackground
2 - esriViewGeography
4 - esriViewGeoSelection
8 - esriViewGraphics
16 - esriViewGraphicSelection
32 - esriviewForeground

You can also specify esriAllScreenCaches, esriNoScreenCache, and esriScreenRecording.

Invalidate sets the cache(s) as dirty. Use IsCacheDirty to check the state of a particular cache.

After completion, Invalidate fires the IDisplayEvents::DisplayInvalidated event.

IActiveView::PartialRefresh has similar parameters and itself calls Invalidate. Use this method instead as much as possible as it automatically determines the cache index based on the phase provided.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Parameters:
rect - A reference to a com.esri.arcgis.geometry.IEnvelope (in)
erase - The erase (in)
cacheIndex - The cacheIndex (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.
See Also:
esriViewDrawPhase, IGlobeLayerProperties2, IActiveView.partialRefresh(int, java.lang.Object, com.esri.arcgis.geometry.IEnvelope), IScreenDisplay.invalidate(com.esri.arcgis.geometry.IEnvelope, boolean, short), IActiveView.getScreenCacheID(int, java.lang.Object), IActiveView.refresh()

isCacheDirty

boolean isCacheDirty(short cacheIndex)
                     throws IOException,
                            AutomationException
Indicates if the specified cache needs refreshing.

Remarks

When drawing, use this property to check if a particular cache is dirty. If a cache is not dirty (FALSE), redraw the cache; if the cache is dirty (TRUE), redraw from scratch.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Parameters:
cacheIndex - The cacheIndex (in)
Returns:
The flag
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

drawCache

void drawCache(int hDC,
               short index,
               tagRECT deviceRect,
               tagRECT cacheRect)
               throws IOException,
                      AutomationException
Draws the specified screen cache to the specified window device context. Pass an empty rectangle to copy the full bitmap to the DC origin.

Remarks

Redrawing data from scratch is time consuming compared to drawing data that has been cached in an off-screen bitmap. If a particular cache return FALSE for IsCacheDirty, use DrawCache to instantly redraw the bitmap.

Use the CacheMemDC property to get the desired cache's hDC.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Parameters:
hDC - The hDC (A COM typedef) (in)
index - The index (in)
deviceRect - A Structure: com.esri.arcgis.display.tagRECT (in)
cacheRect - A Structure: com.esri.arcgis.display.tagRECT (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

doScroll

void doScroll(int xDelta,
              int yDelta,
              boolean updateScreen)
              throws IOException,
                     AutomationException
Scrolls the screen by the specified amount.

Remarks

ArcMap's scroll bars call this method to scroll the current display. The updateScreen parameter specifies whether or not the display will be refreshed after the scroll.

Example:

The following example shows how this method can be used.

MapControl mapControl; 
IActiveView pActiveView = mapControl.getActiveView(); 
IDisplayTransformation pDisplayTransform =      
   pActiveView.getScreenDisplay().getDisplayTransformation()  
IScreenDisplay pScreenDisplay = pActiveView.getScreenDisplay();  
pScreenDisplay.doScroll( 100, 100, true );

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Parameters:
xDelta - The xDelta (in)
yDelta - The yDelta (in)
updateScreen - The updateScreen (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

trackPan

void trackPan()
              throws IOException,
                     AutomationException
Interactively pans the screen.

Remarks

There are two approaches to panning - this method, and the group PanStart, PanMoveTo, and PanStop. This method is the easiest to use as it takes care of all the mouse events and refreshing the display when pan is complete.

Call this method in the mouse down event and make certain you have a reference to the correct ScreenDisplay object. For example, if you are in layout view and you want to pan just the focus map, do not use the ScreenDisplay object associated with IMxDocument::ActiveView. Instead, get the focus Map via IMxDocument::FocusMap, and then get its ScreenDisplay.

Example:

MapControl mapControl; 
IActiveView pActiveView = mapControl.getActiveView();        
IScreenDisplay pScreenDisplay = pActiveView.getScreenDisplay();        
pScreenDisplay.trackPan();

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.
See Also:
IScreenDisplay.panMoveTo(com.esri.arcgis.geometry.IPoint), IScreenDisplay.panStart(com.esri.arcgis.geometry.IPoint), IScreenDisplay.panStop()

panStart

void panStart(IPoint mouseLocation)
              throws IOException,
                     AutomationException
Prepares display for panning.

Remarks

Call PanStart to initiate panning. The required point parameter specifies the pan's starting point. Call PanMoveTo next to specify a destination point.

The typical sequence for using the pan methods is as follows:

See TrackPan for an alternative panning approach.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Parameters:
mouseLocation - A reference to a com.esri.arcgis.geometry.IPoint (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.
See Also:
IScreenDisplay.panMoveTo(com.esri.arcgis.geometry.IPoint), IScreenDisplay.panStart(com.esri.arcgis.geometry.IPoint), IScreenDisplay.panStop(), IScreenDisplay.trackPan()

panMoveTo

void panMoveTo(IPoint mouseLocation)
               throws IOException,
                      AutomationException
Pans to a new point.

Remarks

PanMoveTo pans the display by calculating an offset distance between the start point supplied to PanStart and the destination point provided to this method. The recording cache is automatically redrawn each time PanMoveTo is called. Use the envelope PanStop returns to truly refresh the display.

The typical sequence for using the pan methods is as follows:

See TrackPan for an alternative panning approach.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Parameters:
mouseLocation - A reference to a com.esri.arcgis.geometry.IPoint (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.
See Also:
IScreenDisplay.panMoveTo(com.esri.arcgis.geometry.IPoint), IScreenDisplay.panStart(com.esri.arcgis.geometry.IPoint), IScreenDisplay.panStop(), IScreenDisplay.trackPan()

panStop

IEnvelope panStop()
                  throws IOException,
                         AutomationException
Stops panning and returns new visible bounds.

Remarks

PanStop creates an Envelope that should be used to reset the extent of the active view. Because PanMoveTo redraws only the recording cache (bitmap), there are typically blank areas in the display. Call IActiveView::Refresh after calling PanStop to invalidate the entire display.

The typical sequence for using the pan methods is as follows:

See TrackPan for an alternative panning approach.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Returns:
A reference to a com.esri.arcgis.geometry.IEnvelope
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.
See Also:
IScreenDisplay.panMoveTo(com.esri.arcgis.geometry.IPoint), IScreenDisplay.panStart(com.esri.arcgis.geometry.IPoint), com.esri.arcgis.display.IActiveView, IScreenDisplay.panStop(), IScreenDisplay.trackPan()

trackRotate

void trackRotate()
                 throws IOException,
                        AutomationException
Interactively rotates the screen.

Remarks

There are two approaches to rotating the display - this method and the group RotateStart, RotateMoveTo, RotateTimer, and RotateStop. This method is the easiest to use as it takes care of all the mouse events automatically, performs the final display rotation, and invalidates the display.

Call this method in the mouse down event and make certain you have a reference to the correct ScreenDisplay object. For example, if you are in layout view and you want to pan just the focus map, do not use the ScreenDisplay object associated with IMxDocument::ActiveView. Instead, get the focus Map via IMxDocument::FocusMap, and then get its ScreenDisplay.

Example:

The following java code excerpt shows this.

MapControl mapControl; 
IActiveView pActiveView = mapControl.getActiveView();        
IScreenDisplay pScreenDisplay = pActiveView.getScreenDisplay();       
pScreenDisplay.trackRotate();
 



Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

rotateStart

void rotateStart(IPoint mousePt,
                 IPoint centerPt)
                 throws IOException,
                        AutomationException
Prepares display for rotating. If centerPt is NULL, the center of the visible bounds is used.

Remarks

Call RotateStart to initiate rotating the display. The required point parameter specifies the starting point of the rotation. Call RotateMoveTo next to specify the rotation destination point, a rotation angle is calculated based on these two points.

The typical sequence for using the rotate methods is as follows:

See TrackRotate for an alternative rotating approach.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Parameters:
mousePt - A reference to a com.esri.arcgis.geometry.IPoint (in)
centerPt - A reference to a com.esri.arcgis.geometry.IPoint (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.
See Also:
IScreenDisplay.rotateTimer(), IDisplayTransformation.getRotation(), IScreenDisplay.rotateMoveTo(com.esri.arcgis.geometry.IPoint), IScreenDisplay.rotateStop(), IScreenDisplay.rotateStart(com.esri.arcgis.geometry.IPoint, com.esri.arcgis.geometry.IPoint)

rotateMoveTo

void rotateMoveTo(IPoint pPoint)
                  throws IOException,
                         AutomationException
Rotates to new point.

Remarks

RotateMoveTo rotates the display based on the calculated angle between the start point supplied to RotateStart and the destination point provided to this method. Next call RotateTimer to show the rotation degree readout and repaint the display from cache.

The typical sequence for using the rotate methods is as follows:

See TrackRotate for an alternative rotating approach.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Parameters:
pPoint - A reference to a com.esri.arcgis.geometry.IPoint (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.
See Also:
IScreenDisplay.rotateTimer(), IDisplayTransformation.getRotation(), IScreenDisplay.rotateMoveTo(com.esri.arcgis.geometry.IPoint), IScreenDisplay.rotateStop(), IScreenDisplay.rotateStart(com.esri.arcgis.geometry.IPoint, com.esri.arcgis.geometry.IPoint)

rotateTimer

void rotateTimer()
                 throws IOException,
                        AutomationException
Draws the rotated display. Call in response to WM_TIMER.

Remarks

RotateTimer shows the rotation degree readout and repaints the display from cache.

The typical sequence for using the rotate methods is as follows:

See TrackRotate for an alternative rotating approach.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.
See Also:
IScreenDisplay.rotateTimer(), IDisplayTransformation.getRotation(), IScreenDisplay.rotateMoveTo(com.esri.arcgis.geometry.IPoint), IScreenDisplay.rotateStop(), IScreenDisplay.rotateStart(com.esri.arcgis.geometry.IPoint, com.esri.arcgis.geometry.IPoint)

rotateStop

double rotateStop()
                  throws IOException,
                         AutomationException
Stops rotating and returns new angle.

Remarks

RotateStop returns the final rotation angle. You must call IDisplayTransformation::Rotation with the final rotation angle to actually rotate the display.

The typical sequence for using the rotate methods is as follows:

See TrackRotate for an alternative rotating approach.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Returns:
The degrees
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.
See Also:
IScreenDisplay.rotateTimer(), IDisplayTransformation.getRotation(), IScreenDisplay.rotateMoveTo(com.esri.arcgis.geometry.IPoint), IScreenDisplay.rotateStop(), IScreenDisplay.rotateStart(com.esri.arcgis.geometry.IPoint, com.esri.arcgis.geometry.IPoint)

updateWindow

void updateWindow()
                  throws IOException,
                         AutomationException
Forces a redraw.

Remarks

Use UpdateWindow to process pending Windows WM_PAINT messages immediately. This may be the case if you have a routine that takes a long time to execute and you need the window to refresh while the code executes. Typically, no drawing will occur until all your code has been executed and control returns to the ArcMap's message loop and the WM_PAINT message is handled. UpdateWindow forces the window to invalidate by sending a WM_PAINT message directly to the window; the normal ArcMap message queue is bypassed.

See UpdateWindow in MSDN for more information.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.