Matlab GUI 滑鼠事件

來源:互聯網
上載者:User

http://blog.sina.com.cn/s/blog_544233cf0100fdxd.html

 

今天Google了一下Matlab是不是能跟蹤滑鼠移動的軌跡,真的可以!

 

Matlab GUI 如何響應滑鼠事件

 

摘自:MATLAB 程式設計與應用

 

這些性質都是附屬於一個圖形視窗,因此,他們規範了在此圖形視窗下,各項滑鼠事件的反應指令.

一般而言,我們希望滑鼠先被按下,然後再移動滑鼠時,才會觸發移動時的反應指令.欲達到此效果,我們必須做下列項:

在滑鼠按鈕被按下時,設定 WindowButtonMotionFcn 及 WindowButtonUpFcn 的值.

在滑鼠按鈕被釋放時,清除 WindowButtonMotionFcn 及 WindowButtonUpFcn 的值.

因此,只有在滑鼠按鈕被按下,且滑鼠在移動時,對應於WindowButtonMotionFcn 的反應指令才會被呼叫.

 

以下我們用一個簡單的例子來說明.在這個例子中,滑鼠事件會產生下列反應:

按下滑鼠時,MATLAB 指令視窗會出現「Mouse down!」的訊息.

按下並移動滑鼠時,MATLAB 會在圖形視窗畫出滑鼠軌跡,並指令視窗印出「Mouse is moving!」及當時滑鼠的位置.

釋放滑鼠時,MATLAB 指令視窗會出現「Mouse up!」的訊息.

 

 

代碼

function tmouse(action)
% TMOUSE 本例展示如何以Handle Graphics來設定滑鼠事件(Mouse
% Events)的反應指令(Callbacks)
if nargin == 0, action = 'start'; end
switch(action)
% 開啟圖形視窗
case 'start',
axis([0 1 0 1]);% 設定圖軸範圍
box on;% 將圖軸加框
title('Click and drag your mouse in this window!');
% 設定滑鼠按鈕被按下時的反應指令為「tmouse down」
set(gcf, 'WindowButtonDownFcn', 'tmouse down');
% 滑鼠按鈕被按下時的反應指令
case 'down',
% 設定滑鼠移動時的反應指令為「tmouse move」
set(gcf, 'WindowButtonMotionFcn', 'tmouse move');
% 設定滑鼠按鈕被釋放時的反應指令為「tmouse up」
set(gcf, 'WindowButtonUpFcn', 'tmouse up');
% 列印「Mouse down!」訊息
fprintf('Mouse down!\n');
% 滑鼠移動時的反應指令
case 'move',
currPt = get(gca, 'CurrentPoint');
x = currPt(1,1);
y = currPt(1,2);
line(x, y, 'marker', '.', 'EraseMode', 'xor');
% 列印「Mouse is moving!」訊息及滑鼠現在位置
fprintf('Mouse is moving! Current location = (%g, %g)\n', currPt(1,1), currPt(1,2));
% 滑鼠按鈕被釋放時的反應指令
case 'up',
% 清除滑鼠移動時的反應指令
set(gcf, 'WindowButtonMotionFcn', '');
% 清除滑鼠按鈕被釋放時的反應指令
set(gcf, 'WindowButtonUpFcn', '');
% 列印「Mouse up!」訊息
fprintf('Mouse up!\n');
end

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.