2013-02-04 400 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:] –