|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface IDisplay
Provides access to members that control the Display.
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.
Use the IDisplay interface to draw points, lines, polygons, rectangles, and text on a device.
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 |
---|
IDisplayTransformation getDisplayTransformation() throws IOException, AutomationException
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void setDisplayTransformation(IDisplayTransformation displayTransformation) throws IOException, AutomationException
displayTransformation
- A reference to a com.esri.arcgis.display.IDisplayTransformation (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.IEnvelope getClipEnvelope() throws IOException, AutomationException
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.ISet getClipEnvelopes() throws IOException, AutomationException
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.IGeometry getClipGeometry() throws IOException, AutomationException
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.
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void setClipGeometry(IGeometry geometry) throws IOException, AutomationException
geometry
- A reference to a com.esri.arcgis.geometry.IGeometry (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.boolean isSuppressEvents() throws IOException, AutomationException
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.
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void setSuppressEvents(boolean suppressEvents) throws IOException, AutomationException
suppressEvents
- The suppressEvents (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.IDisplayFilter getFilter() throws IOException, AutomationException
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void setFilterByRef(IDisplayFilter filter) throws IOException, AutomationException
filter
- A reference to a com.esri.arcgis.display.IDisplayFilter (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.int getHPalette() throws IOException, AutomationException
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void setHPalette(int hPalette) throws IOException, AutomationException
hPalette
- The hPalette (A COM typedef) (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void startDrawing(int hDC, short cacheID) throws IOException, AutomationException
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.
StartDrawing fires the IDisplayEvents::DisplayStarted event.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>
hDC
- The hDC (A COM typedef) (in)cacheID
- The cacheID (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.IDisplay.finishDrawing()
int getHDC() throws IOException, AutomationException
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.
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void finishDrawing() throws IOException, AutomationException
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.IDisplay.startDrawing(int, short)
void progress(int vertexCount) throws IOException, AutomationException
vertexCount
- The vertexCount (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void drawPoint(IGeometry point) throws IOException, AutomationException
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.
point
- A reference to a com.esri.arcgis.geometry.IGeometry (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.IDisplay.startDrawing(int, short)
void drawMultipoint(IGeometry multipoint) throws IOException, AutomationException
multipoint
- A reference to a com.esri.arcgis.geometry.IGeometry (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.IDisplay.startDrawing(int, short)
void drawRectangle(IEnvelope rectangle) throws IOException, AutomationException
rectangle
- A reference to a com.esri.arcgis.geometry.IEnvelope (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.IDisplay.startDrawing(int, short)
void drawPolyline(IGeometry polyline) throws IOException, AutomationException
polyline
- A reference to a com.esri.arcgis.geometry.IGeometry (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.IDisplay.startDrawing(int, short)
void drawPolygon(IGeometry polygon) throws IOException, AutomationException
polygon
- A reference to a com.esri.arcgis.geometry.IGeometry (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.IDisplay.startDrawing(int, short)
void drawText(IGeometry shape, String text) throws IOException, AutomationException
shape
- A reference to a com.esri.arcgis.geometry.IGeometry (in)text
- The text (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.IDisplay.startDrawing(int, short)
void setSymbol(ISymbol sym) throws IOException, AutomationException
sym
- A reference to a com.esri.arcgis.display.ISymbol (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.IIlluminationProps getIlluminationProps() throws IOException, AutomationException
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.void setIlluminationProps(IIlluminationProps illuminationProps) throws IOException, AutomationException
illuminationProps
- A reference to a com.esri.arcgis.display.IIlluminationProps (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |