Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

rbbox

为区域选择创建橡皮筋框

语法

rbbox
rbbox(initialRect)
rbbox(initialRect,fixedPoint)
rbbox(initialRect,fixedPoint,stepSize)
finalRect = rbbox(...)

说明

rbbox 在当前图窗中初始化并跟踪橡皮筋框。它将初始框设置为 0×0 像素的矩形,将其定位在图窗的 CurrentPoint 处并从该点开始跟踪。

rbbox(initialRect) 将橡皮筋框的初始位置和大小指定为 [x y width height],其中 xy 定义左下角,widthheight 定义大小。initialRect 使用由当前图窗的 Units 属性指定的单位,并从图窗窗口的左下角开始测量。在 rbbox 收到按钮事件之前,橡皮筋框最接近指针位置的角将随着指针移动。

rbbox(initialRect,fixedPoint) 指定橡皮筋框中保持固定的角。所有参数都使用由当前图窗的 Units 属性指定的单位,并从图窗窗口的左下角开始测量。fixedPoint 是二元素向量 [x y]。跟踪点是与 fixedPoint 定义的定位角呈斜对角关系的角。

rbbox(initialRect,fixedPoint,stepSize) 指定橡皮筋框的更新频率。跟踪点超过 stepSize 图窗单位时,rbbox 会重新绘制橡皮筋框。默认 stepsize 为 1

finalRect = rbbox(...) 返回一个四元素向量 [x y width height],其中 xy 是框左下角的 xy 分量,widthheight 是框的大小。

示例

全部折叠

要在图窗中以交互方式创建一个注释矩形,首先创建一个名为 createRectangle.m 的程序文件。在该程序文件中:

  • 创建一个图窗。通过设置图窗的 Units 属性来归一化图窗的单位。

  • 使用 waitforbuttonpress 函数阻止语句在您点击鼠标按键之前执行。

  • 使用 rbbox 函数初始化一个橡皮筋框。通过点击并拖动形成一个矩形。当您释放鼠标按键时,rbbox 函数返回矩形的位置。

  • 使用 annotation 函数显示矩形。

function createRectangle
    figure('Units','normalized')
    waitforbuttonpress
    pos = rbbox;
    annotation('rectangle',pos,'Color','r') 
end

运行程序文件。通过点击并拖动创建矩形。

createRectangle

A figure containing a red rectangle

要在 Axes 对象中创建一个注释矩形,必须首先禁用内置交互。否则,当您拖动矩形时,坐标区将平移(在二维视图中)或旋转(在三维视图中)。有关内置交互的详细信息,请参阅对图的交互进行控制

创建一个名为 createRectangleInAxes.m 的程序文件。在该程序文件中:

  • 将当前图窗作为变量返回,并对其单位进行归一化。

  • 使用 waitforbuttonpress 函数阻止语句在您点击鼠标按键之前执行。

  • 使用 rbbox 函数初始化一个橡皮筋框。通过点击并拖动形成一个矩形。当您释放鼠标按键时,rbbox 函数返回矩形的位置。

  • 使用 annotation 函数显示矩形。

function createRectangleInAxes
    f = gcf;
    f.Units = 'normalized';
    waitforbuttonpress
    pos = rbbox;
    annotation('rectangle',pos,'Color','r') 
end

然后,创建一个图。通过调用 disableDefaultInteractivity 函数禁用内置交互。

plot(1:10)
ax = gca;
disableDefaultInteractivity(ax) 

调用程序文件并创建矩形。

createRectangleInAxes 

A chart containing a red rectangle

创建矩形后,您可以通过调用 enableDefaultInteractivity 函数来重新启用内置交互。

enableDefaultInteractivity(ax)

提示

rbbox 可用于定义矩形区域和调整其大小:

  • 对于框定义,initialRect[x y 0 0],其中 (x,y) 是图窗的 CurrentPoint

  • 要调整框的大小,initialRect 定义您调整大小的矩形区域(例如图例)。fixedPoint 是与跟踪点呈斜对角关系的角。

如果当前未按按钮,rbbox 立即返回结果。因此将 rbboxwaitforbuttonpress 结合使用,这样在调用 rbbox 时按下鼠标按键。释放鼠标按键时 rbbox 返回结果。

兼容性考虑

全部展开

R2020b 中的行为有变化

在 R2006a 之前推出