exponenta event banner

rbbox

Создать рамку rubberband для выбора области

Синтаксис

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

Описание

rbbox инициализирует и отслеживает блок rubberband на текущем рисунке. Он устанавливает начальное поле в виде прямоугольника размером 0 на 0 пикселей, закрепляет это поле на рисунке CurrentPointи начинает отслеживание с этой точки.

rbbox(initialRect) определяет начальное местоположение и размер поля rubberband как [x y width height], где x и y определите левый нижний угол и width и height определите размер. initialRect находится в единицах, указанных текущей цифрой Units и измеряется в левом нижнем углу окна фигуры. Угол поля, ближайший к положению указателя, следует за указателем до rbbox получает событие button-up.

rbbox(initialRect,fixedPoint) определяет угол поля, который остается фиксированным. Все аргументы находятся в единицах, указанных текущей цифрой Units и измеряется в левом нижнем углу окна фигуры. fixedPoint - двухэлементный вектор, [x y]. Точка слежения - это угол, диагонально противоположный прикрепленному якорем углу, определяемому fixedPoint.

rbbox(initialRect,fixedPoint,stepSize) определяет частоту обновления rubberband-поля. Когда точка отслеживания превышает stepSize фигурные единицы, rbbox перерисовывает рамку с резиновой полосой. Ступенчатый размер по умолчанию: 1.

finalRect = rbbox(...) возвращает четырехэлементный вектор, [x y width height], где x и y являются компонентами x и y нижнего левого угла поля, и width и height - размер коробки.

Примеры

свернуть все

Для интерактивного создания прямоугольника аннотации на рисунке сначала создайте программный файл с именем createRectangle.m. В файле программы:

  • Создайте фигуру. Нормализуйте единицы измерения фигуры, установив их Units собственность.

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

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

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

  • Возвращает текущую цифру как переменную и нормализует ее единицы измерения.

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

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

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

развернуть все

В R2020b изменилось поведение

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