dragrect

Перетащите прямоугольники мышью

Синтаксис

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

Описание

[finalrect] = dragrect(initialrect) отслеживает один или несколько прямоугольников в любом месте экрана. Матрица n на 4 initialrect определяет прямоугольники. Каждая строка initialrect должно содержать начальное положение прямоугольника как [left bottom width height] значения. dragrect возвращает окончательное положение прямоугольников в finalrect.

[finalrect] = dragrect(initialrect,stepsize) перемещает прямоугольники с шагами stepsize. Нижний левый угол первого прямоугольника ограничивается сеткой размера, равной stepsize начиная с нижнего левого угла рисунка, и все другие прямоугольники сохраняют свое исходное смещение от первого прямоугольника.

[finalrect] = dragrect(...) возвращает окончательные положения прямоугольников при отпускании кнопки мыши. Размер шага по умолчанию 1.

Примеры

свернуть все

Чтобы отследить прямоугольник на рисунке, сначала создайте программный файл с именем trackRectangle.m. В программном файле:

  • Создайте рисунок и верните Figure объект.

  • Блокируйте выполнение операторов до тех пор, пока вы не нажмете кнопку мыши при помощи waitforbuttonpress функция.

  • Сделать прямоугольник 50 на 100 пикселей появиться при помощи dragrect функция. Нижний левый угол прямоугольника находится в положении курсора.

  • Перетащите прямоугольник в другое положение. Когда вы отпускаете кнопку мыши, 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 необходимо сначала отключить встроенные взаимодействия. В противном случае при перетаскивании прямоугольника оси будут панорамироваться (на 2-D виде) или поворачиваться (на 3-D виде). Для получения дополнительной информации о встроенных взаимодействиях смотрите Интерактивность диаграммы управления.

Создайте программный файл с именем trackRectangleInAxes.m. В программном файле:

  • Верните текущую фигуру как переменную.

  • Блокируйте выполнение операторов до тех пор, пока вы не нажмете кнопку мыши при помощи waitforbuttonpress функция.

  • Сделать прямоугольник 50 на 100 пикселей появиться при помощи dragrect функция. Нижний левый угол прямоугольника находится в положении курсора.

  • Перетащите прямоугольник в другое положение. Когда вы отпускаете кнопку мыши, 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 немедленно возвращается, если кнопка мыши в данный момент не нажата. Использовать dragrect в ButtonDownFcn, или из командной строки в сочетании с waitforbuttonpress, чтобы убедиться, что кнопка мыши отключена, когда dragrect вызывается. dragrect возвращается, когда вы отпускаете кнопку мыши.

Если перетаскивание заканчивается на окне рисунка, положения прямоугольников возвращаются в системе координат этого рисунка. Если перетаскивание заканчивается на части экрана, не содержащейся в окне рисунка, прямоугольники возвращаются в систему координат рисунка, над которой началось перетаскивание.

Примечание

Вы не можете использовать нормированные модули рисунка с dragrect.

Вопросы совместимости

расширить все

Поведение изменено в R2020b

Представлено до R2006a