6

GUIDE を使用して GUI を作成しました。軸があります (tag=axes1)。軸に画像が表示されます。画像(軸の内側)をクリックすると、座標を取得する必要があります。画像が軸に追加されていないときに座標値を取得しますが、画像が軸に表示されても軸が取得されません。座標を取得するには?

4

2 に答える 2

24

imageHandle次のハンドルを使用して画像をプロットしたと仮定しましょう。

imageHandle = imshow(imageObj);

ButtonDownFcn次のような軸ハンドルではなく、イメージ ハンドルに を割り当てる必要があります。

set(imageHandle,'ButtonDownFcn',@ImageClickCallback);

次のように、この関数からマウス座標を取得します。

function ImageClickCallback ( objectHandle , eventData )
   axesHandle  = get(objectHandle,'Parent');
   coordinates = get(axesHandle,'CurrentPoint'); 
   coordinates = coordinates(1,1:2);
   %// then here you can use coordinates as you want ...
end

この小さなデモを試して、私の答えを確認できます。

function demoOnImageClick
clc;clear;
imObj = rand(500,500);
figure;
hAxes = axes();
imageHandle = imshow(imObj);
set(imageHandle,'ButtonDownFcn',@ImageClickCallback);

function ImageClickCallback ( objectHandle , eventData )
axesHandle  = get(objectHandle,'Parent');
coordinates = get(axesHandle,'CurrentPoint'); 
coordinates = coordinates(1,1:2);
message     = sprintf('x: %.1f , y: %.1f',coordinates (1) ,coordinates (2));
helpdlg(message);
end

end
于 2013-02-04T11:00:49.373 に答える