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 получает событие кнопки.

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

rbbox(initialRect,fixedPoint,stepSize) задает, как часто rubberband поле обновляется. Когда точка отслеживания превышает stepSize изобразите модули, rbbox перерисовывает rubberband поле. Значением по умолчанию stepsize является 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 объект, необходимо сначала отключить встроенные взаимодействия. В противном случае, когда вы перетаскиваете прямоугольник, оси будут панорамировать (в 2D представлении) или вращаться (в 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