exponenta event banner

dragrect

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

Синтаксис

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

Описание

[finalrect] = dragrect(initialrect) отслеживает один или несколько прямоугольников в любом месте экрана. Матрица n-by-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