轉載: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