How to draw a rectangle on the screen


Summary This topic shows how to draw a polygon using IRubberBand.

Drawing a rectangle on the screen

The following code draws a rectangle on the screen in the ActiveView where the mouse is clicked. The x,y coordinates come from a mousedown click event when the user interacts with the application. In this example, the envelope is not persisted on the screen but is removed after the next screen refresh.
[VB.NET]
Public Sub DrawRectangle(ByVal activeView As ESRI.ArcGIS.Carto.IActiveView)
    
    If activeView Is Nothing Then
        Return
    End If
    
    Dim screenDisplay As ESRI.ArcGIS.Display.IScreenDisplay = activeView.ScreenDisplay
    
    ' Constant.
    screenDisplay.StartDrawing(screenDisplay.hDC, CShort(ESRI.ArcGIS.Display.esriScreenCache.esriNoScreenCache))
    Dim rgbColor As ESRI.ArcGIS.Display.IRgbColor = New ESRI.ArcGIS.Display.RgbColorClass
    rgbColor.Red = 255
    
    Dim color As ESRI.ArcGIS.Display.IColor = rgbColor ' Implicit cast.
    Dim simpleFillSymbol As ESRI.ArcGIS.Display.ISimpleFillSymbol = New ESRI.ArcGIS.Display.SimpleFillSymbolClass
    simpleFillSymbol.Color = color
    
    Dim symbol As ESRI.ArcGIS.Display.ISymbol = TryCast(simpleFillSymbol, ESRI.ArcGIS.Display.ISymbol) ' Dynamic cast.
    Dim rubberBand As ESRI.ArcGIS.Display.IRubberBand = New ESRI.ArcGIS.Display.RubberEnvelopeClass
    Dim geometry As ESRI.ArcGIS.Geometry.IGeometry = rubberBand.TrackNew(screenDisplay, symbol)
    screenDisplay.SetSymbol(symbol)
    screenDisplay.DrawRectangle(TryCast(geometry, ESRI.ArcGIS.Geometry.IEnvelope)) ' Dynamic cast.
    screenDisplay.FinishDrawing()
    
End Sub
[C#]
public void DrawRectangle(ESRI.ArcGIS.Carto.IActiveView activeView)
{

    if (activeView == null)
    {
        return ;
    }

    ESRI.ArcGIS.Display.IScreenDisplay screenDisplay = activeView.ScreenDisplay;

    // Constant.
    screenDisplay.StartDrawing(screenDisplay.hDC, (System.Int16)
        ESRI.ArcGIS.Display.esriScreenCache.esriNoScreenCache); // Explicit cast.
    ESRI.ArcGIS.Display.IRgbColor rgbColor = new ESRI.ArcGIS.Display.RgbColorClass();
    rgbColor.Red = 255;

    ESRI.ArcGIS.Display.IColor color = rgbColor; // Implicit cast.
    ESRI.ArcGIS.Display.ISimpleFillSymbol simpleFillSymbol = new
        ESRI.ArcGIS.Display.SimpleFillSymbolClass();
    simpleFillSymbol.Color = color;

    ESRI.ArcGIS.Display.ISymbol symbol = simpleFillSymbol as
        ESRI.ArcGIS.Display.ISymbol; // Dynamic cast.
    ESRI.ArcGIS.Display.IRubberBand rubberBand = new
        ESRI.ArcGIS.Display.RubberEnvelopeClass();
    ESRI.ArcGIS.Geometry.IGeometry geometry = rubberBand.TrackNew(screenDisplay,
        symbol);
    screenDisplay.SetSymbol(symbol);
    screenDisplay.DrawRectangle(geometry as ESRI.ArcGIS.Geometry.IEnvelope); 
        // Dynamic cast.
    screenDisplay.FinishDrawing();
}


See Also:

How to draw a point on the screen
How to draw a polygon on the screen
How to draw a polyline on the screen




Development licensing Deployment licensing
ArcView ArcView
ArcEditor ArcEditor
ArcInfo ArcInfo
Engine Developer Kit Engine Runtime