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

Добавьте Поле Увеличения и инструмент 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