Main Content

setConstrainedPosition

ROI オブジェクトに新しい位置を設定する

setConstrainedPosition は推奨されません。位置制約の設定方法の詳細については、バージョン履歴を参照してください。

説明

setConstrainedPosition(h,pos) は、ROI オブジェクト h の位置を新しい位置に設定します。候補位置 pos は、setPositionConstraintFcn で指定される位置制約関数に従います。

入力引数

すべて折りたたむ

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

ROI オブジェクトの候補位置。数値配列として指定します。配列の形状は ROI オブジェクトのタイプで異なります。さらに関数 setPosition で返される形式と整合性があります。

ROI オブジェクト位置
imellipse[xmin ymin width height] 形式の 4 要素のベクトル。楕円を囲む境界ボックスの新しいサイズと位置を表します。境界ボックスの新しいサイズは width x height ピクセルです。ボックスの左上隅の新しい (x,y) 座標は (xmin,ymin) です。
imline[x1 y1; x2 y2] 形式の 2 行 2 列の行列。ラインの 2 つの端点の新しい位置を表します。
impoint[x y] 形式の 1 行 2 列ベクトル。
impolyn 行 2 列の行列。2 つの列は、n 個の各頂点に対して、新しい xy 座標を定義します。
imrect[xmin ymin width height] 形式の 4 要素ベクトル。四角形の新しいサイズは width x height ピクセルです。四角形の左上隅の新しい (x,y) 座標は (xmin,ymin) です。

バージョン履歴

R2008a で導入

すべて折りたたむ

R2018b: setConstrainedPosition は非推奨

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

既存の ROI では、makeConstrainToRectFcn を使用して、ROI を描画または移動できる範囲を指定する関数を作成します。その後、この関数を ROI に登録します。オブジェクト関数 setPosition を使用すると、制約された範囲の外側であっても指定したすべての場所に ROI を移動できます。setConstrainedPosition を使用する場合、ROI は、制約位置関数によって設定された範囲に従います。

新しい ROI では、ROI の DrawingArea プロパティを使用して、ROI を描画または移動できる範囲を指定します。Position プロパティを使用して位置を設定した場合は、DrawingArea プロパティで設定された範囲に従いません。

コードの更新

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

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

この例では、関数 makeConstrainToRectFcn を使用して、ROI を作成および移動できない 20 ピクセルの境界を作成します。その後、この例では、この範囲の外側に ROI の場所を指定しようとします。オブジェクト関数 setConstrainedPosition を使用した場合、ROI は、範囲の外側にある場所の指定には従いません。オブジェクト関数 setPosition を使用する場合、範囲の外側の場所を指定できます。

imshow('cell.tif')
h = impoint(gca,20,60);
% Make a function that constrains movement of the point
x = get(gca,'XLim');
y = get(gca,'YLim');
fcn = makeConstrainToRectFcn('impoint',x,y);;
% Apply the constraint function to the ROI.
setPositionConstraintFcn(h,fcn);
% Try to specify a Position value outside the limits.
setConstrainedPosition(h,[1 51]);
% Note how ROI does not honor value outside of limits.

新しい ROI では、DrawingArea プロパティを使用して、ROI を描画または移動できる範囲を制限します。この例では、20 ピクセルの余白をイメージ境界内に作成します。Position プロパティで場所を指定した場合、ROI は制約に従いません。

I = imread('cell.tif');
imshow(I)
h = drawpoint(gca,'Position',[20 60])
[height width] = size(I); %Get image dimensions
h.DrawingArea = [20,20,(width-40),(height-40)];