com.esri.arcgis.display
Interface IDisplay

All Superinterfaces:
Serializable
All Known Subinterfaces:
IAppDisplay, IScreenDisplay, IScreenDisplay2
All Known Implementing Classes:
GlobeDisplay, IAppDisplayProxy, IDisplayProxy, IScreenDisplayProxy, SceneGraph, ScreenDisplay, SimpleDisplay

public interface IDisplay
extends Serializable

Provides access to members that control the Display.

Remarks

The Display objects, those that implement IDisplay, are a set of objects which allow application developers to easily draw graphics on a variety of output devices. These objects allow you to render shapes stored in real-world coordinates to a screen, printer, or export file.

The IDisplay interface abstracts a drawing surface. A drawing surface is simply any hardware device, export file, or memory bitmap that can be represented by a Windows Device Context. Each display manages its own DisplayTransformation object which handles the conversion of coordinates from real-world space to device space and back.

There are currently two Display objects: ScreenDisplay and SimpleDisplay. The ScreenDisplay object abstracts a normal application window and implements scrolling and backing store. The SimpleDisplay abstracts all other devices that can be rendered to using a Windows Device Context such as printers and metafiles.

When To Use

Use the IDisplay interface to draw points, lines, polygons, rectangles, and text on a device.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux


Method Summary
 void drawMultipoint(IGeometry multipoint)
          Draws specified multipoint on the display.
 void drawPoint(IGeometry point)
          Draws specified point on the display.
 void drawPolygon(IGeometry polygon)
          Draws specified polygon on the display.
 void drawPolyline(IGeometry polyline)
          Draws specified line on the display.
 void drawRectangle(IEnvelope rectangle)
          Draws specified rectangle on the display.
 void drawText(IGeometry shape, String text)
          Draws specified text on the display.
 void finishDrawing()
          Completes drawing.
 IEnvelope getClipEnvelope()
          The bounds of the invalid region.
 ISet getClipEnvelopes()
          The invalid region as a set of envelopes.
 IGeometry getClipGeometry()
          User-specified clip shape.
 IDisplayTransformation getDisplayTransformation()
          The transformation used by the display.
 IDisplayFilter getFilter()
          Display filter.
 int getHDC()
          The device context that the display is currently drawing to.
 int getHPalette()
          Palette.
 IIlluminationProps getIlluminationProps()
          Illumination properties used by the display.
 boolean isSuppressEvents()
          Indicates if display object suppresses events.
 void progress(int vertexCount)
          Call frequently during drawing process.
 void setClipGeometry(IGeometry geometry)
          User-specified clip shape.
 void setDisplayTransformation(IDisplayTransformation displayTransformation)
          The transformation used by the display.
 void setFilterByRef(IDisplayFilter filter)
          Display filter.
 void setHPalette(int hPalette)
          Palette.
 void setIlluminationProps(IIlluminationProps illuminationProps)
          Illumination properties used by the display.
 void setSuppressEvents(boolean suppressEvents)
          Indicates if display object suppresses events.
 void setSymbol(ISymbol sym)
          Sets the symbol used for drawing.
 void startDrawing(int hDC, short cacheID)
          Prepare the display for drawing.
 

Method Detail

getDisplayTransformation

IDisplayTransformation getDisplayTransformation()
                                                throws IOException,
                                                       AutomationException
The transformation used by the display.

Remarks

Each display object, like ScreenDisplay for example, manages (CoCreates) a DisplayTransformation object to convert coordinates between map units and device units. Use this property to get a reference to the DisplayTransformation object associated with this 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.display.IDisplayTransformation
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setDisplayTransformation

void setDisplayTransformation(IDisplayTransformation displayTransformation)
                              throws IOException,
                                     AutomationException
The transformation used by the display.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

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

getClipEnvelope

IEnvelope getClipEnvelope()
                          throws IOException,
                                 AutomationException
The bounds of the invalid region. Use after StartDrawing and before FinishDrawing.

Remarks

The ClipEnvelope is the is the display transformation's fitted bounds (IDisplayTransformation::FittedBounds) intersected with the ClipGeometry if one exists.
This property is mostly used during drawing operations, for example, IDisplay's drawing functions clip (ITopologicalOperator::Clip) the object they are drawing against the ClipEnvelope to ensure that only the visible parts of the object are drawn.

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.

getClipEnvelopes

ISet getClipEnvelopes()
                      throws IOException,
                             AutomationException
The invalid region as a set of envelopes. Use after StartDrawing and before FinishDrawing.

Remarks

Use ISet::Reset and ISet::Next methods to iterate through the returned set of objects.

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.ISet
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getClipGeometry

IGeometry getClipGeometry()
                          throws IOException,
                                 AutomationException
User-specified clip shape. This shape is merged with the invalid region to arrive at the actual clip region. Must be specified before StartDrawing.

Remarks

Use the ClipGeometry property to shape the area data is drawn in. For example, if you had a map of the United States that contained many layers, you could set the ClipGeometry property on the focus Map's ScreenDisplay object equal to the geometry of a particular state thereby telling the map to only draw the data falling within the particular state's area. The ClipGeometry is used to cookie-cut all data before it is drawn.

See IMap::ClipGeometry for a more information and a sample.

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.IGeometry
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setClipGeometry

void setClipGeometry(IGeometry geometry)
                     throws IOException,
                            AutomationException
User-specified clip shape. This shape is merged with the invalid region to arrive at the actual clip region. Must be specified before StartDrawing.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

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

isSuppressEvents

boolean isSuppressEvents()
                         throws IOException,
                                AutomationException
Indicates if display object suppresses events.

Remarks

Use SuppressEvents to prevent the following events from being fired.

For example, IScreenDisplay::StartDrawing sets SuppressEvents to TRUE and FinishDrawing sets it back to FALSE, this prevents all transform events from firing during the drawing.

SuppressEvents is set to FALSE by default.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

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

setSuppressEvents

void setSuppressEvents(boolean suppressEvents)
                       throws IOException,
                              AutomationException
Indicates if display object suppresses events.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

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

getFilter

IDisplayFilter getFilter()
                         throws IOException,
                                AutomationException
Display filter. Must call while in a StartDrawing-FinishDrawing sequence. Set Filter to 0 to resume normal drawing.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

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

setFilterByRef

void setFilterByRef(IDisplayFilter filter)
                    throws IOException,
                           AutomationException
Display filter. Must call while in a StartDrawing-FinishDrawing sequence. Set Filter to 0 to resume normal drawing.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

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

getHPalette

int getHPalette()
                throws IOException,
                       AutomationException
Palette.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

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

setHPalette

void setHPalette(int hPalette)
                 throws IOException,
                        AutomationException
Palette.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

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

startDrawing

void startDrawing(int hDC,
                  short cacheID)
                  throws IOException,
                         AutomationException
Prepare the display for drawing. Specify the device context and the cache to draw to (normally esriNoScreenCache). The ScreenDisplay coclass will automatically create a window device context if you specify hdc = 0.

Remarks

StartDrawing and FinishDrawing are used to manage clipping, symbols, and caching. Call StartDrawing and FinishDrawing anytime you want to draw to a device such as a display, printer, or cache (bitmap). However, if you are drawing in response to IActiveViewEvents::AfterDraw, the Map object automatically makes these calls for you.

StartDrawing has two parameters: hDc and cacheID. The hDc parameter specifies the target device where drawing will occur, usually a display, printer, or bitmap. The cacheID parameter activates a specific cache. In most cases, esriNoScreenCache should be used.

Specifying a cache sets it as the screen's active cache. When esriNoScreenCache is used, it sets the display's active cache to zero and drawing occurs directly in the device. Specify a cache when you don't want to draw to a screen directly and you instead want to draw to a cache (bitmap) that may ultimately be copied to the screen. For example, when ArcMap draws geography, it draws it to a specific cache and then the cache is copied to the screen. When the screen repaints, instead of drawing all the data from scratch again, the software checks if the cache is dirty or not and simply redraws the bitmap to save time if it can. When drawing to a cache, the hDc parameter should be the device context of the bitmap, use the IScreenDisplay::CacheMemDC property to get a particular cache's hDC.

Each time you need to change the cache you are drawing to, you must do so inside a new StartDrawing / FinishDrawing block. For example, ArcMap usually creates three caches: one for geography layers, one for graphics and annotation, and one for selections. ArcMap draws each of these phases within a separate StartDrawing / FinishDrawing block.

There are times when may need to draw shapes directly to screen without having them become part of a display cache. For example, drawing moving objects. In these cases, use IScreenDisplay::WindowDC to get the device context of the display and esriNoScreenCache as the cacheID.

If a zero is specified for the hDc parameter, the Windows API function GetDC is used to populate IScreenDisplay::WindowDC with the hDC of the main display and drawing is sent here.

As mentioned above, if you drawing in response to the IActiveView::AfterDraw event, the Map object calls StartDrawing and StopDrawing for you. Also, if the draw phase you are drawing after is cached, your drawings will be cached as well.
StartDrawing fires the IDisplayEvents::DisplayStarted event.

Example:

The following java code gives you an example drawing sequence.

<font face=”Courier New” size=2>
<pre>
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);
}
</pre>
</font>

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Parameters:
hDC - The hDC (A COM typedef) (in)
cacheID - The cacheID (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.
See Also:
IDisplay.finishDrawing()

getHDC

int getHDC()
           throws IOException,
                  AutomationException
The device context that the display is currently drawing to. Only valid between calls to StartDrawing and FinishDrawing.

Remarks

Returns the device context specified to StartDrawing. This may be the device context of a display, cache (bitmap), or some other device such as a printer. As StartDrawing is called frequently throughout the drawing pipeline, the hDc property continually changes and is therefore safe to use only within a single StartDrawing / FinishDrawing block.

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.

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.

finishDrawing

void finishDrawing()
                   throws IOException,
                          AutomationException
Completes drawing.

Remarks

When FinishDrawing is called, all the caches get flushed to the screen.
FinishDrawing must be called before StartDrawing can be called again.

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:
IDisplay.startDrawing(int, short)

progress

void progress(int vertexCount)
              throws IOException,
                     AutomationException
Call frequently during drawing process.

Remarks

Progress is called from the draw methods.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

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

drawPoint

void drawPoint(IGeometry point)
               throws IOException,
                      AutomationException
Draws specified point on the display.

Remarks

DrawPoint draws a Point object with the symbol that must be specified before hand with the SetSymbol method. All draw methods must be enclosed between the calls to StartDrawing and FinishDrawing unless you are drawing in response to the IActiveViewEvents::AfterDraw event.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Parameters:
point - A reference to a com.esri.arcgis.geometry.IGeometry (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.
See Also:
IDisplay.startDrawing(int, short)

drawMultipoint

void drawMultipoint(IGeometry multipoint)
                    throws IOException,
                           AutomationException
Draws specified multipoint on the display.

Remarks

DrawMultipoint draws a Multipoint object with the symbol that must be specified before hand with the SetSymbol method. All draw methods must be enclosed between the calls to StartDrawing and FinishDrawing unless you are drawing in response to the IActiveViewEvents::AfterDraw event.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Parameters:
multipoint - A reference to a com.esri.arcgis.geometry.IGeometry (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.
See Also:
IDisplay.startDrawing(int, short)

drawRectangle

void drawRectangle(IEnvelope rectangle)
                   throws IOException,
                          AutomationException
Draws specified rectangle on the display.

Remarks

DrawRectangle draws a Envelope object with the symbol that must be specified before hand with the SetSymbol method. All draw methods must be enclosed between the calls to StartDrawing and FinishDrawing unless you are drawing in response to the IActiveViewEvents::AfterDraw event.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Parameters:
rectangle - A reference to a com.esri.arcgis.geometry.IEnvelope (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.
See Also:
IDisplay.startDrawing(int, short)

drawPolyline

void drawPolyline(IGeometry polyline)
                  throws IOException,
                         AutomationException
Draws specified line on the display.

Remarks

DrawPolyline draws a Polyline object with the symbol that must be specified before hand with the SetSymbol method. All draw methods must be enclosed between the calls to StartDrawing and FinishDrawing unless you are drawing in response to the IActiveViewEvents::AfterDraw event.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Parameters:
polyline - A reference to a com.esri.arcgis.geometry.IGeometry (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.
See Also:
IDisplay.startDrawing(int, short)

drawPolygon

void drawPolygon(IGeometry polygon)
                 throws IOException,
                        AutomationException
Draws specified polygon on the display.

Remarks

DrawPolygon draws a Polygon object with the symbol that must be specified before hand with the SetSymbol method. All draw methods must be enclosed between the calls to StartDrawing and FinishDrawing unless you are drawing in response to the IActiveViewEvents::AfterDraw event.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Parameters:
polygon - A reference to a com.esri.arcgis.geometry.IGeometry (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.
See Also:
IDisplay.startDrawing(int, short)

drawText

void drawText(IGeometry shape,
              String text)
              throws IOException,
                     AutomationException
Draws specified text on the display.

Remarks

DrawText draws a text string with the symbol that must be specified before hand with the SetSymbol method. All draw methods must be enclosed between the calls to StartDrawing and FinishDrawing unless you are drawing in response to the IActiveViewEvents::AfterDraw event.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

Parameters:
shape - A reference to a com.esri.arcgis.geometry.IGeometry (in)
text - The text (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.
See Also:
IDisplay.startDrawing(int, short)

setSymbol

void setSymbol(ISymbol sym)
               throws IOException,
                      AutomationException
Sets the symbol used for drawing. Four different symbols can be specified simultaneously: Marker, Line, Fill, Text.

Remarks

Call this method before calling one of the Draw methods to set the symbol for the object about to be drawn.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

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

getIlluminationProps

IIlluminationProps getIlluminationProps()
                                        throws IOException,
                                               AutomationException
Illumination properties used by 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.display.IIlluminationProps
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setIlluminationProps

void setIlluminationProps(IIlluminationProps illuminationProps)
                          throws IOException,
                                 AutomationException
Illumination properties used by the display.

Product Availability

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

Supported Platforms

Windows, Solaris, Linux

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