imscrollpanel

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

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

Синтаксис

hpanel = imscrollpanel(hparent,himage)

Описание

пример

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])

Добавьте Поле Увеличения и инструмент Overview фигуре.

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())

Увеличьте масштаб к 1 600% на темном пятне.

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