ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

imscrollpanel

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

構文

hpanel = imscrollpanel(hparent, himage)

説明

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

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

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

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

倍率を変更して、ターゲット イメージの点 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 は、スカラー倍率係数です。

戻り値 idremoveNewMagnificationCallback でのみ使用されます。

removeNewMagnificationCallback

新しい倍率コールバックのリストから対応する関数を削除します。

api.removeNewMagnificationCallback(id)

ここで、id は、addNewMagnificationCallback によって返される識別子です。

addNewLocationCallback

関数ハンドル fcn を新しい位置のコールバック関数のリストに追加します。

id = api.addNewLocationCallback(fcn)

スクロール パネルの場所が変更されると、リストの各関数が次の構文を使用して呼び出されます。

fcn(loc)

ここで、loc は、[xmin ymin] です。

戻り値 idremoveNewLocationCallback でのみ使用されます。

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% の倍率で中央に表示されます。イメージのハンドルは変更されません。

指定可能なパラメーターには、'Colormap''DisplayRange'、および 'InitialMagnification' を含む、関数 imshow でサポートされている多くのパラメーターが含まれています。また、'PreserveView' パラメーターを使用して、置換中にイメージの現在の倍率とセンタリングを保持できます。現在のセンタリングと倍率を保持するには、論理スカラー True を指定します。パラメーター名は省略形でも構いません。大文字と小文字は区別されません。

メモ:

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

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

すべて折りたたむ

イメージを 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)

R2006a より前に導入

この情報は役に立ちましたか?