【转】Matlab GUI 鼠标事件
2010-11-18 16:09
447 查看
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!」的讯息.
代码
今天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
相关文章推荐
- Matlab GUI 鼠标事件(一)
- Matlab GUI 鼠标事件(二)
- wxPython做GUI:如何在Grid中响应鼠标移动事件
- Java-GUI(鼠标事件)-键盘事件
- unity3d 鼠标事件穿透GUI界面的问题
- GUI——鼠标和键盘事件
- Unity3D笔记 英保通五 鼠标事件与GUI系统双击检测
- GUI编程 鼠标事件和键盘事件
- Matlab GUI 鼠标响应(三)
- unity3d 鼠标事件穿透GUI的处理
- GUI__【GUI概述】【布局】【Frame】【事件监听机制】【窗体事件】【按钮】【鼠标事件】【键盘事件】【Dialog对话框】【菜单】
- [javaSE] GUI(鼠标事件)
- Java基础--Java---IO流------GUI(布局)、Frame、事件监听机制、窗体事件、Action事件、鼠标事件、对话框Dialog、键盘事件、菜单
- Java基础--Java---IO流------GUI(布局)、Frame、事件监听机制、窗体事件、Action事件、鼠标事件、对话框Dialog、键盘事件、菜单
- Java GUI编程(五)鼠标事件:实现画点
- Matlab GUI鼠标画线
- GUI中“鼠标事件”问题,~~~~~求解~~~~~····
- Opencv 鼠标事件GUI
- JAVA基础再回首(二十七)——JAVA中的图形化界面、GUI概述、简单的窗体创建、事件监听机制、动作事件、GUI布局、鼠标事件
- (96)GUI:鼠标事件、键盘事件、按钮事件、窗体事件