The following code fragment creates a canvas with a fixed-size paint window that is not
affected by resizing:
Canvas canvas;
canvas = (Canvas)xv_create(frame, CANVAS,
CANVAS_AUTO_SHRINK, FALSE,
CANVAS_AUTO_EXPAND, FALSE,
CANVAS_WIDTH, 1000,
CANVAS_HEIGHT, 1000,
NULL);
This call sets the initial size of the paint window to 1000 by 1000 pixels. The origin of the
paint window’s coordinate system is the upper-left corner (0,0) and the lower-right corner
(CANVAS_WIDTH-1, CANVAS_HEIGHT-1). Note that we did not set the size of the
canvas subwindow. Instead, we allowed it to be determined by the frame size. The size of
the paint window remains constant regardless of how the frame and canvas subwindow is
resized. If the frame or the canvas subwindow resizes, the subwindow merely changes its
view of the underlying paint window, which remains constant.
In the following code fragment, we set the size of the canvas subwindow, using generic attri-
butes:
Canvas canvas;
canvas = (Canvas)xv_create(frame, CANVAS,
CANVAS_AUTO_SHRINK, FALSE,
CANVAS_AUTO_EXPAND, FALSE,
CANVAS_WIDTH, 1000,
CANVAS_HEIGHT, 1000,
XV_WIDTH, 200,
XV_HEIGHT, 100,
NULL);
Here, a canvas subwindow is created that is 200 pixels wide and 100 pixels high. All other
attributes about this canvas object are the same as the previous example: the paint window is
going to be 1000x1000 in width and height. The problem with this canvas is that the user has
no way to view different parts of the paint window. To handle that, scrollbars should be atta-
ched to the canvas ...