MATLAB如何获得鼠标点击坐标

Hel*_*ASP 6 matlab user-interface axes

我使用GUIDE制作了GUI.我有一个轴(tag = axes1).轴上显示图像.当我点击图像(内轴)时,我需要获得坐标.当图像未添加到轴时,我得到坐标值.但是图像以轴显示,不能获得轴.如何获得坐标?

Sam*_*mal 24

假设您使用以下句柄绘制了图像imageHandle:

imageHandle = imshow(imageObj);
Run Code Online (Sandbox Code Playgroud)

您应该分配ButtonDownFcn到图像句柄而不是轴处理:

set(imageHandle,'ButtonDownFcn',@ImageClickCallback);
Run Code Online (Sandbox Code Playgroud)

并从此函数获取鼠标坐标,如下所示:

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
Run Code Online (Sandbox Code Playgroud)

您可以尝试这个小型演示来检查我的答案:

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
Run Code Online (Sandbox Code Playgroud)

  • @HelloASP,如果满足您对问题的要求,您可以接受答案,以结束此问题中的讨论. (2认同)

Sha*_*hai 2

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

ah = get( imageHandle, 'Parent' );
Run Code Online (Sandbox Code Playgroud)

然后你可以通过以下方式获取鼠标点击位置

p = get( ah, 'CurrentPoint' );
Run Code Online (Sandbox Code Playgroud)