|MATLAB Function Reference|
Create rubberband box for area selection
initializes and tracks a rubberband box in the current figure. It sets the initial rectangular size of the box to 0, anchors the box at the figure's
CurrentPoint, and begins tracking from this point.
specifies the initial location and size of the rubberband box as
[x y width height], where
y define the lower-left corner, and
height define the size.
initialRect is in the units specified by the current figure's
Units property, and measured from the lower-left corner of the figure window. The corner of the box closest to the pointer position follows the pointer until
rbbox receives a button-up event.
specifies the corner of the box that remains fixed. All arguments are in the units specified by the current figure's
Units property, and measured from the lower-left corner of the figure window.
fixedPoint is a two-element vector,
[x y]. The tracking point is the corner diametrically opposite the anchored corner defined by
specifies how frequently the rubberband box is updated. When the tracking point exceeds
stepSize figure units,
rbbox redraws the rubberband box. The default stepsize is
finalRect = rbbox(...)
returns a four-element vector,
y are the x and y components of the lower-left corner of the box, and
height are the dimensions of the box.
rbbox is useful for defining and resizing a rectangular region:
[x y 0 0], where
(x,y)is the figure's
initialRectdefines the rectangular region that you resize (e.g., a legend).
fixedPointis the corner diametrically opposite the tracking point.
rbbox returns immediately if a button is not currently pressed. Therefore, you use
waitforbuttonpress so that the mouse button is down when
rbbox is called.
rbbox returns when you release the mouse button.
Assuming the current view is
view(2), use the current axes'
CurrentPoint property to determine the extent of the rectangle in dataspace units:
k = waitforbuttonpress; point1 = get(gca,'CurrentPoint'); % button down detected finalRect = rbbox; % return figure units point2 = get(gca,'CurrentPoint'); % button up detected point1 = point1(1,1:2); % extract x and y point2 = point2(1,1:2); p1 = min(point1,point2); % calculate locations offset = abs(point1-point2); % and dimensions x = [p1(1) p1(1)+offset(1) p1(1)+offset(1) p1(1) p1(1)]; y = [p1(2) p1(2) p1(2)+offset(2) p1(2)+offset(2) p1(2)]; hold on axis manual plot(x,y) % redraw in dataspace units
View Control for related functions