imscrollpanel

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

Описание

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

пример

hpanel = imscrollpanel(hparent,himage) создает панель прокрутки, содержащую целевое изображение (изображение, которое будет перемещаться). himage - указатель на целевое изображение. hparent - указатель на рисунок или уипанель, который будет содержать панель прокрутки. Функция возвращается 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 и uicontrol между рисунком и объектом осей.

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

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

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