ドキュメンテーション

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

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' プロパティを手動で設定しなければなりません。

倍率ボックスと概要ツールを使用してスクロール パネルを作成します。

  1. スクロール パネルを作成します。

    hFig = figure('Toolbar','none',...
                  'Menubar','none');
    hIm = imshow('saturn.png');
    hSP = imscrollpanel(hFig,hIm);
    set(hSP,'Units','normalized',...
            'Position',[0 .1 1 .9])
  2. 倍率ボックスと概要ツールを追加します。

    hMagBox = immagbox(hFig,hIm);
    pos = get(hMagBox,'Position');
    set(hMagBox,'Position',[0 0 pos(3) pos(4)])
    imoverview(hIm)
  3. スクロール パネル API を使用して、ビューをプログラム内で制御します。

    api = iptgetapi(hSP);
  4. 現在の倍率と位置を取得します。

    mag = api.getMagnification();
    r = api.getVisibleImageRect();
  5. イメージの左上隅を表示します。

    api.setVisibleLocation(0.5,0.5)
  6. 適合する値に倍率を変更します。

    api.setMagnification(api.findFitMag())
  7. 暗斑上で 1600% まで拡大します。

    api.setMagnificationAndCenter(16,306,800)
この情報は役に立ちましたか?