Main Content

dragrect

通过鼠标拖动绘制矩形

语法

[finalrect] = dragrect(initialrect)
[finalrect] = dragrect(initialrect,stepsize)

说明

[finalrect] = dragrect(initialrect) 跟踪屏幕上任意位置的一个或多个矩形。n×4 矩阵 initialrect 定义这些矩形。initialrect 的每行必须包含 [left bottom width height] 值形式的初始矩形位置。dragrectfinalrect 中返回矩形的最终位置。

[finalrect] = dragrect(initialrect,stepsize) 以增量 stepsize 移动矩形。第一个矩形的左下角受限于从图窗左下角开始的大小等于 stepsize 的网格,并且其他的所有矩形保持它们相对于第一个矩形的原始偏移量。

[finalrect] = dragrect(...) 在鼠标按键被释放时返回矩形的最终位置。默认步长是 1

示例

全部折叠

要跟踪图窗中的矩形,首先创建一个名为 trackRectangle.m 的程序文件。在该程序文件中:

  • 创建一个图窗并返回 Figure 对象。

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

  • 通过使用 dragrect 函数显示 50×100 像素的矩形。矩形的左下角位于光标所在位置。

  • 将矩形拖到不同位置。当您释放鼠标按键时,dragrect 函数返回矩形的最终位置。

function r2 = trackRectangle
    f = figure;
    waitforbuttonpress
    p = f.CurrentPoint;
    r1 = [p(1,1) p(1,2) 50 100];
    r2 = dragrect(r1);
end

运行程序文件。通过点击和拖动来跟踪矩形。

trackRectangle
ans =

   330   275    50   100

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

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

  • 将当前图窗作为变量返回。

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

  • 通过使用 dragrect 函数显示 50×100 像素的矩形。矩形的左下角位于光标所在位置。

  • 将矩形拖到不同位置。当您释放鼠标按键时,dragrect 函数返回矩形的最终位置。

function r2 = trackRectangleInAxes
    f = gcf;
    waitforbuttonpress
    p = f.CurrentPoint;
    r1 = [p(1,1) p(1,2) 50 100];
    r2 = dragrect(r1);
end

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

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

调用程序文件。通过点击和拖动来跟踪矩形。

trackRectangleInAxes
ans =

   330   275    50   100

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

enableDefaultInteractivity(ax)

详细信息

全部折叠

像素

以像素为单位的距离不依赖 Windows®Macintosh 系统上的系统分辨率:

  • 在 Windows 系统上,一个像素是 1/96 英寸。

  • Macintosh 系统上,一个像素是 1/72 英寸。

在 Linux® 系统上,一个像素的大小由系统分辨率确定。

提示

如果当前未按鼠标按键,dragrect 立即返回结果。在 ButtonDownFcn 中或从命令行中结合使用 dragrectwaitforbuttonpress,确保在调用 dragrect 时按下鼠标按键。鼠标按键释放时 dragrect 返回结果。

如果拖动结束时位于图窗窗口内,则返回矩形在该图窗的坐标系中的位置。如果拖动结束时位于图窗窗口外的屏幕,则返回矩形在拖动开始时所在图窗的坐标系中的位置。

注意

不能对 dragrect 使用归一化的图窗单元。

版本历史记录

在 R2006a 之前推出

全部展开