Summary
The IScreenDisplay
interface has a ScaleContents
property; set this to true
Background
As this questionthis question reveals, ESRI changed the default behaviour of the map control at ArcGIS 10.
Less redrawing in data view
In previous versions of ArcMap, if you changed the size of the ArcMap display while working in data view, either by resizing the ArcMap window or by docking/undocking/resizing a dockable window, by default your map was completely redrawn to fit inside the available display area. So the scale changed and the extent stayed the same (although you may have seen some extra geographic coverage based on how well the extent fit inside the new shape of the display area). At version 10, the default drawing behavior in data view has been changed so that when the display size is changed, your map is no longer completely redrawn to fit inside the display. Instead, the scale stays the same and the extent will change. If you make the display bigger, you'll see a larger geographic extent, and vice versa.
This has the performance advantage that the portion of the display unaffected by resizing doesn't need to be redrawn at all. For example, if you close a docked window, only the portion of the display that was obscured by the window needs to be redrawn. It is also easier to work with the display because geographic features on your map don't move around as you dock and undock windows. Features on your map remain in the same location in the display until you manually pan or zoom the map.
Resolution
You can reverse this change by using the IScreenDisplay
interface to set the ScaleContents
property to true
. This can be set once the map is loaded into the control.
For me, the line of code would read:
mapControl.ActiveView.ScreenDisplay.ScaleContents = True;
This restores the old map redrawing behaviour - and as a side-effect, cures the redrawing problem explained here!