2013-02-04 101 views
6

GUIDEを使用してGUIを作成しました。私は軸(タグ= axes1)を持っています。画像は軸に表示されます。 イメージ(軸の内側)をクリックすると、座標を取得する必要があります。 イメージがaxesに追加されていないときに座標値を取得します。イメージは軸に表示され、軸は取得されません。どのように座標を取得するには?あなたは軸がMATLABマウスのクリック座標を取得する方法

ah = get(imageHandle, 'Parent'); 

により画像ハンドルからハンドルを取得することができます

答えて

2

その後、あなたはあなたがハンドルに画像をプロットたと仮定しましょう

p = get(ah, 'CurrentPoint'); 
21

でマウスクリック位置を取得することができます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 
+0

ありがとうございました。 – HelloASP

+2

@HelloASP、あなたはこの質問の議論を終了する質問のあなたの要件を満たしている場合、答えを受け入れることができます。 –

+0

@HelloASP正しいとSamehの答えを確認してください。 thnx:] –

関連する問題