2013-02-04 397 views
6

我已經使用GUIDE製作了我的GUI。我有一個軸(標籤= axes1)。圖像顯示在軸上。 當我點擊圖像(內部座標軸)時,我需要獲取座標。 當圖像沒有添加到座標軸上時,我得到了座標值。但是圖像在座標軸上顯示時沒有座標軸。如何獲得座標?MATLAB如何讓鼠標點擊座標

回答

2

你可以得到軸從圖像處理處理由

ah = get(imageHandle, 'Parent'); 

然後你就可以通過

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

獲取鼠標點擊位置讓我們假設你已經繪製的圖像與手柄imageHandle即:

imageHandle = imshow(imageObj); 

您應該將ButtonDownFcn指定爲t他的圖像處理不是軸搞定:

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:] –