В этом примере показано, как определить пользовательскую функцию ожидания, которая блокирует командную строку MATLAB ® до завершения позиционирования прямоугольника.
Отображение изображения.
imshow('pears.png')Нарисуйте окупаемость инвестиций в прямоугольник в левом верхнем углу изображения.
h = drawrectangle('Position',[1 1 100 100]);
Используйте пользовательскую функцию ожидания для блокирования командной строки MATLAB во время взаимодействия с прямоугольником. В этом примере указана функция с именем customWait (определяется в конце примера).
Пока командная строка заблокирована, измените размер и положение прямоугольника так, чтобы он охватывал одну грушу. Дважды щелкните прямоугольник, чтобы возобновить выполнение customWait функция. Функция возвращает конечное положение прямоугольника.
pos = customWait(h)

pos = 1×4
262.0000 36.0000 144.0000 145.0000
Это пользовательская функция ожидания, которая блокирует выполнение программы при нажатии ROI. После завершения взаимодействия с ROI функция возвращает позицию ROI.
function pos = customWait(hROI) % Listen for mouse clicks on the ROI l = addlistener(hROI,'ROIClicked',@clickCallback); % Block program execution uiwait; % Remove listener delete(l); % Return the current position pos = hROI.Position; end
Эта функция обратного вызова щелчком возобновляет выполнение программы при двойном щелчке по ROI. Обратите внимание, что данные события передаются функции обратного вызова как images.roi.ROIClickedEventData , который позволяет определить функции обратного вызова, которые реагируют на различные типы действий. Например, можно определить функцию обратного вызова для возобновления выполнения программы при нажатии ROI при нажатии клавиши Shift или при нажатии определенной части ROI, например метки.
function clickCallback(~,evt) if strcmp(evt.SelectionType,'double') uiresume; end end
addlistener | drawrectangle | Rectangle | uiresume | uiwait