|
Object Programming: Working with Image Objects |
|
In Object Graphics, the VIEWPLANE_RECT keyword is used to change the view object. The entire image is still contained within the image object, but the view is changed to pan over specific areas of the image object.
The following example imports a grayscale image from the nyny.dat binary file. This grayscale image is an aerial view of New York City. The image contains byte data values and is 768 pixels by 512 pixels. The VIEWPLANE_RECT keyword to the view object is updated to zoom in on the lower left corner of the image. Then the VIEWPLANE_RECT keyword is used to pan over the bottom edge of the image. Complete the following steps for a detailed description of the process.
| Example Code See panning_object.pro in the examples/doc/objects subdirectory of the IDL installation directory for code that duplicates this example. |
nyny.dat file:
file = FILEPATH('nyny.dat', $
SUBDIRECTORY = ['examples', 'data'])
imageSize = [768, 512]
image = READ_BINARY(file, DATA_DIMS = imageSize)
imageSize = [256, 256] image = CONGRID(image, imageSize[0], imageSize[1])
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 = 'Panning Enlarged Image')
viewplane = [0., 0., imageSize/2] 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 enlarged image area.
![]() |
FOR i = 0, ((imageSize[0]/2) - 1) DO BEGIN & $ viewplane = viewplane + [1., 0., 0., 0.] & $ oView -> SetProperty, VIEWPLANE_RECT = viewplane & $ oWindow -> Draw, oView & $ ENDFOR
| Note The & after BEGIN and the $ allow you to use the FOR/DO loop at the IDL command line. These & and $ symbols are not required when the FOR/DO loop in placed in an IDL program as shown in Panning_Object.pro in the examples/doc/objects subdirectory of the IDL installation directory. |
The following figure shows the resulting enlarged image area panned to the right side.
![]() |
OBJ_DESTROY, oView
IDL Online Help (March 06, 2007)