ドキュメンテーション

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

impoly

ドラッグとサイズ変更が可能な多角形を作成

構文

h = impoly
h = impoly(hparent)
h = impoly(hparent, position)
h = impoly(..., param1, val1, ...)

説明

h = impoly は、現在の座標軸上に多角形を対話形式で配置します。この関数は、impoly オブジェクトのハンドル h を返します。多角形には、その外観や動作などを制御するコンテキスト メニューが関連付けられています。対話型動作を参照してください。このコンテキスト メニューを表示するには、多角形を右クリックします。

h = impoly(hparent) は、hparent で指定されたオブジェクト上に多角形を対話形式で配置します。hparent は多角形のグラフィックスの HG の親を指定し、これは通常 axes ですが、hggroup の親にすることが可能なそれ以外のオブジェクトを指定することもできます。

h = impoly(hparent, position) は、hparent で指定されたオブジェクト上でドラッグとサイズ変更が可能な多角形を作成します。position は、多角形の頂点の初期位置を指定する n 行 2 列の配列です。position[X1,Y1;...;XN,YN] の形式をもちます。

h = impoly(..., param1, val1, ...) は、多角形の動作を制御するパラメーターおよび対応値を指定して、ドラッグとサイズ変更が可能な多角形を作成します。次の表に使用可能なパラメーターを示します。パラメーター名は省略形でも構いません。大文字と小文字は区別されません。

パラメーター説明

'Closed'

多角形が閉じているかどうかを制御するスカラーの論理値です。true (既定の設定) に設定すると、impoly は閉多角形を作成します。つまり、指定した最後の頂点と指定した最初の頂点間に直線を描き、閉じた領域を作成します。Closedfalse の場合、impoly は最後の頂点を最初の頂点と結ばないので、開いた多角形 (ポリライン) が作成されます。

'PositionConstraintFcn'

マウスを使用してオブジェクトをドラッグしたときに呼び出される関数ハンドル fcn。この関数を使用して、ラインをドラッグできる場所を制御します。有効な関数ハンドルの詳細は、setPositionConstraintFcn メソッドのヘルプを参照してください。

対話型動作

対話型構文で impoly を呼び出すと、ポインターはイメージ上で十字形 に変わります。多角形の頂点を定義し、多角形のサイズ、形状、位置を調整するには、マウスをクリック アンド ドラッグします。多角形では、その外観や動作などを制御するコンテキスト メニューもサポートされています。コンテキスト メニューに表示される選択肢は、ポインターを多角形の辺 (または領域内の任意の位置) に配置したか、頂点の 1 つに配置したかにより異なります。次の図は、ポインターが頂点ではなく多角形の上にあるときのコンテキスト メニューを示しています。

次の表は、impoly でサポートされる対話型動作を示しています。

対話型動作説明
多角形を閉じる

次のいずれかの方法を使用してください。

  • 選択した多角形の最初の頂点にポインターを移動します。ポインターが円 に変わります。いずれかのマウス ボタンをクリックします。

  • 左マウス ボタンをダブルクリックします。この操作により、マウスの下の点に頂点が作成され、この頂点と最初の頂点をつなぐ直線が描画されます。

  • 右マウス ボタンをクリックします。この操作により、選択した最後の頂点と初期の頂点をつなぐラインが描画されますが、新しい頂点は作成されません。

新しい頂点の追加多角形のエッジにポインターを移動し、A キーを押します。ポインターの形状が に変わります。左マウス ボタンをクリックして、ライン上のその位置に新しい頂点を作成します。
頂点の移動(多角形の整形)ポインターを頂点上に移動します。ポインターが円 に変わります。頂点を新しい位置にクリック アンド ドラッグします。
頂点の削除ポインターを頂点上に移動します。形状が円 に変わります。右クリックして、コンテキスト メニューから [頂点の削除 を選択します。この操作により頂点が削除され、多角形の形状が調整されます。削除した頂点の近傍点である 2 つの頂点の間に新しい直線が描画されます。
多角形の削除ポインターを、頂点ではなく、多角形の内側または多角形を定義しているいずれかの線の上に移動します。右クリックして、コンテキスト メニューから [削除] を選択します。コンテキスト メニューからこのオプションを削除するには、Deletable プロパティを false に設定します。h = impoly(); h.Deletable = false;
多角形の移動多角形内のポインターを移動します。ポインターが花形 に変わります。マウスをクリック アンド ドラッグして、多角形を移動します。
多角形の色の変更多角形内のポインターを移動します。右クリックで表示されるコンテキスト メニューから [色の設定] を選択します。
頂点の座標の取得多角形内のポインターを移動します。右クリックして、コンテキスト メニューから [位置のコピー] を選択します。impoly は、各頂点の x および y 座標を含む n 行 2 列の配列をクリップボードにコピーします。n は指定された頂点の数です。

メソッド

impoly オブジェクトは、以下に示した多数のメソッドをサポートしています。基底クラスから継承したメソッドは、そのクラスにリンクされます。

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

詳細は、imroi を参照してください。

createMask — イメージ内にマスクを作成する

詳細は、imroi を参照してください。

delete — ROI オブジェクトを削除する

詳細は、imroi を参照してください。

getColor — ROI オブジェクトの描画に使用する色を取得する

詳細は、imroi を参照してください。

getPosition — 多角形の現在の位置を返す

pos = getPosition(h) は、多角形 h の現在の位置を返します。返される位置 pos は N 行 2 列の配列 [X1 Y1;...;XN YN] です。

getPositionConstraintFcn — 現在の位置の制約関数の関数ハンドルを返す

詳細は、imroi を参照してください。

removeNewPositionCallback — ROI オブジェクトから新しい位置のコールバックを削除する

詳細は、imroi を参照してください。

resume — MATLAB コマンド ラインの実行を再開する

詳細は、imroi を参照してください。

setClosed — 多角形の形状を設定する

setClosed(TF) は多角形の形状を設定します。TF は論理スカラーです。true は多角形が閉じていることを意味します。false は多角形が開いたポリラインであることを意味します。

setColor — ROI オブジェクトの描画に使用する色を設定する

詳細は、imroi を参照してください。

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

詳細は、imroi を参照してください。

setPosition — 新しい位置に多角形を設定する

setPosition(h,pos) は、多角形 h を新しい位置に設定します。新しい位置 pos は、n 行 2 列の配列 [x1 y1; ..; xn yn] です。ここで、各行は多角形の頂点の位置を指定します。

setPositionConstraintFcn — ROI オブジェクトの位置制約関数を設定する

詳細は、imroi を参照してください。

setVerticesDraggable — 頂点をドラッグできるかどうかを制御する

setVerticesDraggable(h,TF) は、多角形 h の頂点の対話型動作を設定します。TF は論理スカラーです。True は、多角形の頂点がドラッグ可能であることを意味します。False は、多角形の頂点をドラッグできないことを意味します。

wait — ROI の作成が完了するまで MATLAB コマンド ラインをブロックする

詳細は、imroi を参照してください。

すべて折りたたむ

イメージ上に多角形を描画し、xlimylim の範囲内に多角形を保持するために、makeConstrainToRectFcn を使用して位置制約関数を指定します。タイトルに更新した多角形の位置を表示します。

イメージを表示します。

figure
imshow('gantrycrane.png');

頂点の位置を指定してイメージ上に多角形を描画します。

h = impoly(gca, [188,30; 189,142; 93,141; 13,41; 14,29]);

多角形のプロパティを変更できるように、多角形と関連付けられた API を取得します。

api = iptgetapi(h);

多角形の色を黄に設定します。

api.setColor('yellow');

新しい位置のコールバック関数を定義します。この関数は多角形を移動するときに常に多角形の現在の位置を表示します。

api.addNewPositionCallback(@(p) title(mat2str(p,3)));

イメージの境界を範囲として指定することで多角形の移動を制限する関数を作成し、次に setPositionConstraintFcn プロパティの値を設定します。

fcn = makeConstrainToRectFcn('impoly',get(gca,'XLim'),get(gca,'YLim'));
api.setPositionConstraintFcn(fcn);

イメージを表示します。

figure
imshow('gantrycrane.png');

複数の頂点を指定して多角形を作成しますが、対話形式で終了できるように未完成の状態にします。この例では、Closedfalse に設定しているため、多角形は開いたままです。多角形の端点のいずれかにカーソルを移動すると、カーソルの形状が円に変わります。

h = impoly(gca,[203,30; 202,142; 294,142],'Closed',false);

多角形を完成します。既存ラインの終端の 1 つをつかみます。ラインをドラッグして、作成する形状のもう一方のコーナーに延長します。次に、ライン上で A キーを押したままカーソルを置き、頂点をラインに追加します。頂点を作成したら、その頂点を任意の位置にドラッグすると目的の形状を作成できます。必要に応じてラインのドラッグや頂点の追加を続けます。詳細は、対話型動作を参照してください。

ヒント

image オブジェクトを含んでいる axes で impoly を使用し、位置制約関数を指定しない場合、イメージの範囲外に多角形をドラッグすると、それが失われることがあります。関数 plot で作成した座標軸で使用すると、多角形が座標軸の範囲外にドラッグされた場合、座標軸の範囲は自動的に拡張されます。

R2007b で導入

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