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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM