Main Content

imscrollpanel

対話型イメージ ナビゲーション用のスクロール パネル

説明

関数 imscrollpanel を使用してイメージにスクロール パネルを追加します。サイズまたは倍率が、スクリーン上の Figure 内に表示するには大きすぎるイメージになる場合、スクロール パネルには 100% の倍率でイメージの一部が表示されます (1 スクリーン ピクセルは 1 イメージ ピクセルを表します)。スクロール パネルを作成すると、水平および垂直スクロール バーが追加され、イメージの周囲をナビゲーションすることができます。

hpanel = imscrollpanel(hparent,himage) は、ターゲット イメージ (ナビゲートされるイメージ) を含んでいるスクロール パネルを作成します。himage は、ターゲット イメージのハンドルです。hparent は、スクロール パネルを含む Figure または Uipanel のハンドルです。この関数は、スクロール パネルのハンドル hpanel を返します。

すべて折りたたむ

イメージを Figure に表示します。Figure ウィンドウの標準のツール バーとメニュー バーはスクロール パネルで動作しないため、この例では、それらを非表示にします。

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

イメージを表示するスクロール パネルを作成します。

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

倍率ボックスと概要ツールを Figure に追加します。

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)

入力引数

すべて折りたたむ

スクロール パネルを含む figure または uipanel オブジェクトのハンドル。ハンドルとして指定します。

ターゲット イメージのハンドル。ハンドルとして指定します。

出力引数

すべて折りたたむ

スクロール パネルのハンドル。ハンドルとして返されます。スクロール パネルは uipanel オブジェクトの一種です。

詳細

すべて折りたたむ

スクロール パネルの API 構造体

スクロール パネルには、API と呼ばれる関数ハンドルの構造体が含まれます。この API の関数を使用してスクロール パネルを操作できます。この構造体を取得するには、次の例に示すように関数 iptgetapi を使用します。

api = iptgetapi(hpanel)

次の表に、構造体に表示される順序でスクロール パネルの API 関数を示します。

関数

説明

setMagnification

ターゲット イメージの倍率をイメージ ピクセルのスクリーン ピクセル単位で設定します。

mag = api.setMagnification(new_mag)

new_mag はスカラーの倍率係数です。

getMagnification

ターゲット イメージの現在の倍率係数をイメージ ピクセルのスクリーン ピクセル単位で返します。

mag = api.getMagnification()

mag に 100 乗算し、パーセンテージに変換します。たとえば、mag2 の場合、倍率は 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% の倍率で中央に表示されます。image のハンドルは変更されません。

指定可能なパラメーターには、'Colormap''DisplayRange'、および 'InitialMagnification' を含む、関数 imshow でサポートされている多くのパラメーターが含まれています。また、'PreserveView' パラメーターを使用して、置換中にイメージの現在の倍率とセンタリングを保持できます。現在のセンタリングと倍率を保持するには、logical スカラー True を指定します。

ヒント

  • imscrollpanel は、ターゲット イメージのオブジェクト階層を変更します。imscrollpanel は、通常の figure → axes → image というオブジェクト階層ではなく、figure および axes オブジェクト間に複数の uipanel および uicontrol オブジェクトを挿入します。

  • imscrollpanel で与えられるスクロールバー ナビゲーションは、既定で用意されている MATLAB® Figure ナビゲーション ボタン (パン、拡大、縮小) とは互換性がありません。対応するメニュー項目とツール バー ボタンは、カスタム GUI の中で削除され、imscrollpanel で作成されるスクロール可能な Unipanel を含んでいます。

  • imscrollpanel を実行すると、既定で uipanel オブジェクトによって 'Units''normalized' に設定され、'Position'[0 0 1 1] に設定されるため、Figure 全体がそのまま表示されます。新しいスクロール パネルを使用して他の hparent の子を表示する場合、hpanel'Position' プロパティを手動で設定しなければなりません。

バージョン履歴

R2006a より前に導入