Main Content

addNewPositionCallback

ROI オブジェクトに新しい位置のコールバックを追加する

関数 addNewPositionCallback は推奨されません。代わりに、新しい ROI でオブジェクト関数 addlistener を使用してください。詳細については、互換性の考慮事項を参照してください。

説明

id = addNewPositionCallback(h,fcn) は、ROI オブジェクト h の新しい位置のコールバック関数のリストに関数ハンドル fcn を追加します。ROI オブジェクトがその位置を変えるときは常に、リストの各関数が次の構文で呼び出されます。

fcn(pos)

pos は、オブジェクトの getPosition メソッドによって返される形式です。戻り値 id は、removeNewPositionCallback でのみ使用されます。

すべて折りたたむ

四角形 ROI オブジェクトを作成します。タイトルに四角形の位置を表示します。四角形移動時にタイトルを更新します。

imshow("cameraman.tif")
h = imrect(gca, [10 10 100 100]);
addNewPositionCallback(h,@(p) title(mat2str(p,3)));

ここでマウスにより四角形をドラッグして、コールバック動作を確認します。

入力引数

すべて折りたたむ

ROI オブジェクト。imellipseimfreehandimlineimpointimpoly または imrect オブジェクトとして指定します。

関数ハンドル。ハンドルとして指定します。関数は入力として数値配列を受け入れなければなりません。配列は、オブジェクトで getPosition を呼び出したときに返されたものと同じ形式でなければなりません。詳細については、関数ハンドルの作成を参照してください。

出力引数

すべて折りたたむ

新しい位置のコールバック関数の識別子。struct として返されます。

バージョン履歴

R2008a で導入

すべて折りたたむ

R2018b: 関数 addNewPositionCallback は非推奨

R2018b 以降、既存の ROI オブジェクトのセットが新しい ROI オブジェクトのセットに置き換えられています。新しいオブジェクトは、面の色の透明度など、さらに便利な機能を提供します。新しいクラスでは、移動やクリックなどの ROI の変化に応答するために使用できるイベントもサポートされています。現時点では、以前の ROI オブジェクトを削除する予定はありませんが、追加された機能や柔軟性を活用するために、新しい ROI に切り替えてください。新しい ROI 関数を使用した ROI の作成方法の詳細については、ROI の形状の作成を参照してください。

新しい ROI では、Position プロパティには ROI の現在の位置が含まれています。この値が変化したときに通知を受け取るには、オブジェクト関数 addlistener を使用して "リスナー" を設定します。位置情報をリッスンするには、"MovingROI" イベントまたは "ROIMoved" イベントのリスナーを設定します。

コードの更新

addNewPositionCallback のすべてのインスタンスを更新してください。

非推奨の使用方法推奨される代替案

この例では、addNewPositionCallback メソッドを使用して、ROI の位置が変化したときにコールバック関数を実行するように指定します。この例では、コールバック関数が現在の位置をタイトルに表示します。

imshow("cameraman.tif")
h = imrect(gca,[10 10 100 100]);

addNewPositionCallback(h,@(pos) myCallback(pos));

function myCallback(pos)

    title(mat2str(pos,3));

end

次のコードは等価なコードで、オブジェクト関数 addNewPositionCallback がオブジェクト関数 addlistener に置き換えられています。この例では "MovingROI" イベントをリッスンします。

imshow("cameraman.tif")
h = drawrectangle(gca,"Position",[10 10 100 100]);

addlistener(h,"MovingROI",@(src,evt) myCallback(evt));

function myCallback(evt)

    title(mat2str(evt.CurrentPosition,3));
    
end