(Not recommended) Create draggable rectangle
imrect
is not recommended. Use the new Rectangle
ROI object instead. You can also use the new ROI convenience function drawrectangle
. For more information, see Compatibility Considerations.
An imrect
object encapsulates an interactive rectangle over
an image.
You can adjust the size and position of the rectangle by using the mouse. The rectangle also has a context menu that controls aspects of its appearance and behavior. For more information, see Usage.
h = imrect
begins interactive placement of a rectangle on
the current axes, and returns an imrect
object.
h = imrect(
begins
interactive placement of a rectangle on the object specified by
hparent
)hparent
.
h = imrect(___,
specifies name-value pairs that control the behavior of the rectangle.Name,Value
)
When you call imrect
with an interactive syntax, the pointer
changes to a cross hairs when over the image. You can create the rectangle and
adjust its size and position using the mouse. The rectangle also supports a context menu
that you can use to control aspects of its appearance and behavior. Right-click on the
rectangle to access this context menu.
The table lists the interactive behaviors supported by
imrect
.
Interactive Behavior | Description |
---|---|
Moving the rectangle. | Move the pointer inside the rectangle. The pointer changes to a fleur
shape ![]() |
Resizing the rectangle. | Move the pointer over any of the edges or corners of the rectangle,
the shape changes to a double-ended arrow, ![]() |
Changing the color of the rectangle. | Move the pointer inside the rectangle. Right-click and select Set Color from the context menu. |
Retrieving the coordinates of the current position | Move the pointer inside the polygon. Right-click and select
Copy Position from the context menu.
imrect copies a four-element position vector to
the clipboard. |
Preserve the current aspect ratio of the rectangle during interactive resizing. | Move the pointer inside the rectangle. Right-click and select Fix Aspect Ratio from the context menu. |
Deleting the rectangle | Move the pointer inside the rectangle or on an edge of the rectangle.
Right-click and select Delete from the
context menu. To remove this option from the context menu, set the
Deletable property to false: h =
imrect(); h.Deletable = false; |
When you use setResizeable
to make
the rectangle non-resizable, the Fix Aspect Ratio context
menu item is not provided.
Each imrect
object supports a number of functions. Type
methods imrect
to see a complete list.
addNewPositionCallback | Add new-position callback to ROI object |
createMask | Create mask within image |
delete | Delete handle object |
getColor | Get color used to draw ROI object |
getPosition | Return current position of ROI object |
getPositionConstraintFcn | Return function handle to current position constraint function |
removeNewPositionCallback | Remove new-position callback from ROI object |
resume | (Not recommended) Resume execution of MATLAB command line |
setColor | Set color used to draw ROI object |
setConstrainedPosition | Set ROI object to new position |
setFixedAspectRatioMode | Preserve aspect ratio when resizing ROI object |
setPosition | (Not recommended) Move ROI object to new position |
setPositionConstraintFcn | Set position constraint function of ROI object |
setResizable | Set resize behavior of ROI object |
wait | (Not recommended) Block MATLAB command line until ROI creation is finished |
Display a rectangle ROI over an image. Display the position of the rectangle in the title. The title updates when you move the rectangle. Try dragging one side of the rectangle outside the boundary of the image.
imshow('cameraman.tif')
h = imrect(gca,[10 10 100 100]);
addNewPositionCallback(h,@(p) title(mat2str(p,3)));
Specify a position constraint function using makeConstrainToRectFcn
to keep the rectangle inside the original
XLim
and YLim
ranges of the image.
fcn = makeConstrainToRectFcn('imrect',get(gca,'XLim'),get(gca,'YLim')); setPositionConstraintFcn(h,fcn);
Now drag the rectangle using the mouse. Observe that the rectangle can no longer extend past the image boundary.
Interactively place a rectangle by clicking and dragging. Use wait
to block the
MATLAB® command line. Double-click on the rectangle to resume execution of the
MATLAB command line.
imshow('pout.tif');
h = imrect;
position = wait(h);
If you use imrect
with an axes that contains an image object, and
do not specify a position constraint function, users can drag the rectangle outside the
extent of the image. When used with an axes created by the plot
function, the axes limits automatically expand to accommodate the movement of the
rectangle.