|
Object Programming: Positioning Objects in a View |
|
Enlarging a specific section of an image is known as zooming. How zooming is performed within IDL depends on the graphics system. In Direct Graphics, you can use the ZOOM procedure to zoom in on a specific section of an image. If you are working with RGB images, you can use the ZOOM_24 procedure.
In Object Graphics, the VIEWPLANE_RECT keyword is used to change the view object. Using this method, the entire image is still contained within the image object, while the view is changed to only show specific areas of the image object. See the following section for more information.
The following example imports a grayscale image from the convec.dat binary file. This grayscale image shows the convection of the Earth's mantle. The image contains byte data values and is 248 pixels by 248 pixels. The VIEWPLANE_RECT keyword to the view object is updated to zoom in on the lower left corner of the image.
| Example Code See zooming_object.pro in the examples/doc/objects subdirectory of the IDL installation directory for code that duplicates this example. |
convec.dat file:
file = FILEPATH('convec.dat', $
SUBDIRECTORY = ['examples', 'data'])
imageSize = [248, 248]
image = READ_BINARY(file, DATA_DIMS = imageSize)
oWindow = OBJ_NEW('IDLgrWindow', RETAIN = 2, $
DIMENSIONS = imageSize, $
TITLE = 'A Grayscale Image')
oView = OBJ_NEW('IDLgrView', $
VIEWPLANE_RECT = [0., 0., imageSize])
oModel = OBJ_NEW('IDLgrModel')
oImage = OBJ_NEW('IDLgrImage', image, /GREYSCALE)
oModel -> Add, oImage oView -> Add, oModel oWindow -> Draw, oView
The following figure shows the resulting grayscale image display.
oWindow = OBJ_NEW('IDLgrWindow', RETAIN = 2, $
DIMENSIONS = imageSize, TITLE = 'Zoomed Image')
oView -> SetProperty, $ VIEWPLANE_RECT = [0., 0., imageSize/2]
The view object still contains the entire image object, but the region displayed by the view (the viewplane rectangle) is reduced in size by half in both directions. Since the window object remains the same size, the view region is enlarged to fit it to the window.
oWindow -> Draw, oView
The following figure shows the resulting zoomed image.
![]() |
OBJ_DESTROY, oView
IDL Online Help (March 06, 2007)