Main Content

imscrollpanel

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

説明

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

hPanel = imscrollpanel(hParent,hImage) は、イメージ hImage のスクロールを有効にするスクロール パネル hPanel を作成します。このスクロール パネルは、親の Figure または Panel hParent に追加されます。

すべて折りたたむ

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

hFig = figure(Toolbar="none",Menubar="none",Name="Saturn");
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()
mag = 1
r = api.getVisibleImageRect()
r = 1×4

  219.0000  380.8000  763.0000  739.4000

スクロール パネル オブジェクトの API 関数 setVisibleLocation を使用してイメージの左上を表示します。

api.setVisibleLocation(0.5,0.5)

イメージの倍率を変更してイメージ全体をスクロール パネルのウィンドウに合わせます。次の図では、スクロール バーが表示されなくなっています。

api.setMagnification(api.findFitMag())

暗斑上で 1600% まで拡大します。

api.setMagnificationAndCenter(16,306,800)

入力引数

すべて折りたたむ

スクロール パネルの親。Figure オブジェクトまたは Panel オブジェクトとして指定します。

イメージ。Image オブジェクトとして指定します。

出力引数

すべて折りたたむ

スクロール パネル。Panel オブジェクトとして返されます。

詳細

すべて折りたたむ

スクロール パネルの 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 より前に導入