1

あちこち探しましたが、これを行う方法を示すサイトが見つかりません。私が欲しいのは、クリックしたときに軸からオブジェクトを選択できるようにして、その色やものを変更できるようにすることです。

子を選択する方法がわかりません。オブジェクトを作成できますが、選択することはできません。

線を作成するために使用する次のコードがあります。

coord = ginput (2)
x = coord(:,1)
y = coord(:,2)
hline = line(x,y)

編集/削除を選択できるように、オブジェクトを配列に作成する必要があるかどうかはわかりません。ButtonDownFcn を使用する必要があると思いますが、おそらく私は何か完全に間違っています。

何か助けていただければ幸いです。情報が不足している場合はお知らせください

ありがとう

4

1 に答える 1

2

ginput座標を使用して抽出する必要はありません。これは、Figure ウィンドウに組み込まれている「リスナー」によって自動的に行われます。ButtonDownFcnオブジェクト (ライン、ラインシリーズ、またはその他のハンドル グラフィックス オブジェクト) でプロパティを使用できると仮定するのは正しいことです。

(0,0) から (1,1) までの単純な行で作成してみてください。

hline = line([0,1],[0,1]) %# create line, save handle in hline

次にButtonDownFcn、たとえば関数ハンドルを無名関数に設定できます。

set( ...
   hline, ...
   'ButtonDownFcn', @(handle,event)(disp(['You clicked on the line!'])) ...
);

線をクリックしてみてください。コマンドウィンドウにテキストを出力する必要があります。

この関数は、少なくとも 2 つの引数を受け取ることができる必要があります: (1) オブジェクト自体のハンドル (行) と (2) 「イベント構造」。line-objects を使用する場合、2 番目の引数は単に空であると思います。ただし、関数は少なくともこれら 2 つの引数を受け取る必要があります (使用しない場合でも)。

詳細については、http: //www.mathworks.com/help/techdoc/ref/line_props.htmlを参照してください。

独自の関数 (ファイル内の名前付き関数) を使用することもできます。

set( ...
   hline, ...
   'ButtonDownFcn', @(handle,event)(namedFunction(handle,event)) ...
);

...または、(予想どおり)これら2つ以外の引数がある場合は、構造体配列を使用できます。

于 2011-02-17T14:33:11.370 に答える