matlab 获取鼠标位置

转载:http://hi.baidu.com/alec1228/item/68ea36ebe4046f3a86d9deab

第一种途径:ginput()函数

ginput提供了一个十字光标使我们能更精确的选择我们所需要的位置,并返回坐标值。函数调用形式为:

[x,y] = ginput(n)

[x,y] = ginput

[x,y,button] = ginput(...)

对于[x,y] = ginput(n),能使你从当前的坐标系中读取n个点,并返回这n个点的x,y坐标,均为nX1的向量。可以按回车提前结束读数。

[x,y] = ginput 可以无限的读取坐标直到按下回车键。

[x,y,button] = ginput(...) 返回x和y的坐标,以及button值(1=左键,2=中,3=右)或者按键的ASXII码值。

第二种途径:利用figure的WindowButtonDownFcn属性。当你在图上按下鼠标的时候,可通过该属性定义一个回调程序。回调程序可以是一个有效的Matlab表达式或者一个M文件。

那么为显示当前鼠标按下时的坐标值,我们可以将其定义为一个坐标获取和显示程序。

例如:

% 主函数

function test_mouse_track()

figure;

axis([-10,10,0,5]);

set(gcf,'WindowButtonDownFcn',@ButttonDownFcn);

% 回调函数

function ButttonDownFcn(src,event)

pt = get(gca,'CurrentPoint');

x = pt(1,1);

y = pt(1,2);

fprintf('x=%f,y=%f\n',x,y);

-------------------------------------------------

今天看了一下Matlab中响应鼠标的事件,整理如下,

(1)函数WindowButtonMotionFcn,当鼠标在窗口上运动的时候就会相应此函数,于是在此函数中可以设置运动时想要的代码,如:改变鼠标的形状:

if 满足某一个条件

set(gcf,'Pointer','hand') % 设置为手的形状 else set(gcf,'Pointer','arrow') % 设置为箭头的形状 end

(2)函数WindowButtonDownFcn,当鼠标按下去的时候就会响应的函数,但是鼠标按下分为左键和右键,如何区分:

if strcmp(get(gcf,'SelectionType'),'alt')

% 此时即为右键 elseif strcmp(get(gcf,'SelectionType'),'normal')

% 此时即为左键

end