2016-10-07 11 views
0

マウスの位置を読みたい場合は、画像をクリックしてください。callbackアクションを使用して実行できます。MATLABのマウスプロンプトでコールプロンプトのコールバック

function[]=FooBar 
Img=imshow(FooMatrix,'callback',@(s,e)ImageClickCallback()); 

function ImageClickCallback(objectHandle,~) 
    axesHandle = get(objectHandle,'Parent'); 
    coordinates = get(axesHandle,'CurrentPoint'); 
    coordinates = round(coordinates(1,1:2)) 
end 
end 

これは画像にはうまくいきますが、私は軸が線でしかありません。私は、適切なaxesまたはlinecallbackルーチンを設定しようとしましたが、私はエラーメッセージ

を得た

Error while evaluating uicontrol Callback

Error using hg.figure/set The name 'callback' is not an accessible property for an instance of class 'figure'.


背景:私が作成しようとしています
例えば、y=f(x)のように、ユーザーがライン上のポイントを選択できるようにする、ラインプロットを伴うGUI。考え方は、[x,y]のマウスクリックの座標を読み取り、点[f'(y),y]または[x,f(x)]を強調表示することです(f'fの逆関数です)。何かがData Cursorのように機能します。

答えて

2

callbackは、行オブジェクトの有効なプロパティではありません。行オブジェクトのButtonDownFcnプロパティを設定します。

h = plot(1:3, 'ButtonDownFcn', @(s,e)ImageClickCallback() 
ButtonDownFcn

プロパティは、(軸を含む)UI要素

set(gca, 'ButtonDownFcn', @mycallback) 
のほとんどのために利用可能です
関連する問題