rbbox

Создайте резиновый ящик для выбора области

Синтаксис

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

Описание

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

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

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

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

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

Примеры

свернуть все

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

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

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

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

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

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