exponenta event banner

imscrollpanel

Панель прокрутки для интерактивной навигации по изображениям

Описание

Используйте imscrollpanel для добавления панели прокрутки к изображению. Если размер или увеличение делают изображение слишком большим для отображения на рисунке на экране, то панель прокрутки отображает часть изображения со 100% увеличением (один пиксель экрана представляет один пиксель изображения). Панель прокрутки добавляет горизонтальные и вертикальные полосы прокрутки для обеспечения навигации по изображению.

пример

hpanel = imscrollpanel(hparent,himage) создает панель прокрутки, содержащую целевое изображение (изображение для навигации). himage является дескриптором целевого изображения. hparent является дескриптором фигуры или uipanel, который будет содержать панель прокрутки. Функция возвращает hpanel, ручку к панели прокрутки.

Примеры

свернуть все

Отображение изображения на рисунке. В примере подавляются стандартная панель инструментов и меню в окне рисунка, поскольку они не работают с панелью прокрутки.

hFig = figure('Toolbar','none',...
              'Menubar','none');
hIm = imshow('saturn.png');

Создайте панель прокрутки, содержащую изображение.

hSP = imscrollpanel(hFig,hIm);
set(hSP,'Units','normalized','Position',[0 .1 1 .9])

Добавьте к рисунку рамку увеличения и инструмент «Обзор».

hMagBox = immagbox(hFig,hIm);
pos = get(hMagBox,'Position');
set(hMagBox,'Position',[0 0 pos(3) pos(4)])
imoverview(hIm)

Получите API панели прокрутки, чтобы можно было управлять видом программно.

api = iptgetapi(hSP);

Получить текущее увеличение и положение.

mag = api.getMagnification()
r = api.getVisibleImageRect()
mag =

     1

r =

  125.0072  201.5646  716.0000  709.0000

Используйте функцию API объекта панели прокрутки setVisibleLocation для просмотра верхнего левого угла изображения.

api.setVisibleLocation(0.5,0.5)

Измените масштаб изображения таким образом, чтобы оно полностью помещалось на панели прокрутки. На следующем рисунке обратите внимание, что полосы прокрутки больше не видны.

api.setMagnification(api.findFitMag())

Увеличьте изображение темного пятна до 1600%.

api.setMagnificationAndCenter(16,306,800)

Входные аргументы

свернуть все

Маркер к объекту фигуры или uipanel, содержащему панель прокрутки, заданную как маркер.

Маркер к целевому изображению, указанный как маркер.

Выходные аргументы

свернуть все

Ручка для прокрутки панели, возвращаемая как ручка. Панель прокрутки - это тип объекта uipanel.

Подробнее

свернуть все

Структура API панели прокрутки

Панель прокрутки содержит структуру дескрипторов функций, называемых API. Функции этого API можно использовать для управления панелью прокрутки. Для извлечения этой структуры используйте iptgetapi , как в следующем примере.

api = iptgetapi(hpanel)

В этой таблице перечислены функции API панели прокрутки в порядке их отображения в структуре.

Функция

Описание

setMagnification

Задайте увеличение целевого изображения в единицах пикселей экрана на пиксель изображения.

mag = api.setMagnification(new_mag)

new_mag является скалярным коэффициентом увеличения.

getMagnification

Возвращает текущий коэффициент увеличения целевого изображения в единицах пикселей экрана на пиксель изображения.

mag = api.getMagnification()

Умножиться mag на 100 для преобразования в процент. Например, если mag является 2затем увеличение составляет 200%.

setMagnificationAndCenter

Измените увеличение и сделайте точку координатой (x, y) (cx,cy) на целевом изображении в центре панели прокрутки. Эта операция эквивалентна одновременному масштабированию и повторному центрированию.

api.setMagnificationAndCenter(mag,cx,cy)

findFitMag

Верните коэффициент увеличения, который сделает целевое изображение просто помещенным на панели прокрутки.

mag = api.findFitMag()

setVisibleLocation

Переместите целевое изображение так, чтобы указанное расположение было видимым, и обновите полосы прокрутки.

api.setVisibleLocation(xmin, ymin) 
api.setVisibleLocation([xmin ymin])

getVisibleLocation

Возвращает местоположение видимой в данный момент части целевого изображения.

loc = api.getVisibleLocation()

loc является вектором [xmin ymin].

getVisibleImageRect

Возврат текущей видимой части изображения.

r = api.getVisibleImageRect()

r является прямоугольником [xmin ymin width height].

addNewMagnificationCallback

Добавить дескриптор функции fcn в список функций обратного вызова с новым увеличением.

id = api.addNewMagnificationCallback(fcn)

При каждом изменении увеличения панели прокрутки каждая функция в списке вызывается с помощью синтаксиса:

fcn(mag)

mag является скалярным коэффициентом увеличения.

Возвращаемое значение, id, используется только с removeNewMagnificationCallback.

removeNewMagnificationCallback

Удалите соответствующую функцию из списка обратного вызова с новым увеличением.

api.removeNewMagnificationCallback(id)

id - идентификатор, возвращенный addNewMagnificationCallback.

addNewLocationCallback

Добавить дескриптор функции fcn в список функций обратного вызова нового местоположения.

id = api.addNewLocationCallback(fcn)

При каждом изменении расположения панели прокрутки каждая функция в списке вызывается с помощью синтаксиса:

fcn(loc)

loc является [xmin ymin].

Возвращаемое значение, id, используется только с removeNewLocationCallback.

removeNewLocationCallback

Удалите соответствующую функцию из списка обратного вызова нового местоположения.

api.removeNewLocationCallback(id)

id - идентификатор, возвращенный addNewLocationCallback.

replaceImage

api.replaceImage(...,PARAM1,VAL1,PARAM2,VAL2,...) заменяет изображение, отображаемое на панели прокрутки.

api.replaceImage(I)
api.replaceImage(BW)
api.replaceImage(RGB)
api.replaceImage(I,MAP)
api.replaceImage(filename)

По умолчанию новые данные изображения отображаются по центру при 100% увеличении. Маркер изображения не изменился.

Параметры, которые можно указать, включают многие параметры, поддерживаемые imshow, в том числе 'Colormap', 'DisplayRange', и 'InitialMagnification'. Кроме того, можно использовать 'PreserveView' параметр для сохранения текущего увеличения и центрирования изображения при замене. Укажите логический скаляр True сохранение центрирования и увеличения тока.

Совет

  • imscrollpanel изменяет иерархию объектов целевого изображения. Вместо привычной иерархии объектов figure→axes→image, imscrollpanel вставляет несколько объектов uipanel и uiccontrol между фигурой и объектом оси.

  • Навигация по полосе прокрутки в соответствии с imscrollpanel несовместим с кнопками навигации по рисункам MATLAB ® по умолчанию (панорамирование, увеличение, уменьшение). Соответствующие пункты меню и кнопки панели инструментов должны быть удалены в пользовательском графическом интерфейсе пользователя, который включает прокручиваемую uipanel, созданную imscrollpanel.

  • При выполнении imscrollpanel, он, по-видимому, захватывает всю цифру, потому что по умолчанию объект uipanel имеет 'Units' установить в значение 'normalized' и 'Position' установить в значение [0 0 1 1]. Если вы хотите увидеть других детей hparent при использовании новой панели прокрутки необходимо вручную установить 'Position' имущество hpanel.

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