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 回答
2

您可以通过以下方式从图像句柄中获取轴句柄

ah = get( imageHandle, 'Parent' );

然后你可以通过

p = get( ah, 'CurrentPoint' );
于 2013-02-04T10:25:45.247 回答