关于matlab鼠标响应
2016-06-09 22:51
429 查看
今天看了一下Matlab中响应鼠标的事件,整理如下,
(1)函数WindowButtonMotionFcn,当鼠标在窗口上运动的时候就会相应此函数,于是在此函数中可以设置运动时想要的代码,如:改变鼠标的形状:
(2)函数WindowButtonDownFcn,当鼠标按下去的时候就会响应的函数,但是鼠标按下分为左键和右键,如何区分:
属性SelectionType用来判断鼠标按键的类型,可能的值包括(Windows系统上):
normal:代表单击鼠标左键;
extend:代表Shift+左键,或者同时按左右键;
alt:代表Ctrl+左键,或者单击右键;
open:代表双击鼠标任意键。
(3)函数WindowButtonUpFcn,当鼠标被按下后起来的时候的响应函数,同理,可以在里面设置自己想要的代码。
(4)有时候这些函数会综合使用,如:利用Matlab设计一个画图板的时候,经常用得到。
举个栗子:
第一种途径: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文件。
那么为显示当前鼠标按下时的坐标值,我们可以将其定义为一个坐标获取和显示程序。
例如:
附:http://zhidao.baidu.com/link?url=10iOFLUKbZHWtwQr02h7LjAYomOQXzJdufxQkBrOi-8HJZmx9fJ2WA1UDbtX0zkg-KS_aOykjmzLq4dCNOYrDxt4VrnnzFJD-sI8uQ871Hu
http://blog.sina.com.cn/s/blog_4d633dc70100nvl0.html
(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
属性SelectionType用来判断鼠标按键的类型,可能的值包括(Windows系统上):
normal:代表单击鼠标左键;
extend:代表Shift+左键,或者同时按左右键;
alt:代表Ctrl+左键,或者单击右键;
open:代表双击鼠标任意键。
(3)函数WindowButtonUpFcn,当鼠标被按下后起来的时候的响应函数,同理,可以在里面设置自己想要的代码。
(4)有时候这些函数会综合使用,如:利用Matlab设计一个画图板的时候,经常用得到。
举个栗子:
第一种途径: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);
附:http://zhidao.baidu.com/link?url=10iOFLUKbZHWtwQr02h7LjAYomOQXzJdufxQkBrOi-8HJZmx9fJ2WA1UDbtX0zkg-KS_aOykjmzLq4dCNOYrDxt4VrnnzFJD-sI8uQ871Hu
http://blog.sina.com.cn/s/blog_4d633dc70100nvl0.html
相关文章推荐
- [mac]matlab for mac ---关于无法读取avi文件的解决方法
- matlab练习程序(粒子群优化PSO)
- OpenCV和Matlab 通过XML传递数据
- matlab中的sort函数
- matlab学习笔记(1)
- matlab 可视化 —— axis
- matlab 可视化 —— imagesc、
- MATLAB中的nargin与varargin的用法
- 如何仅用一行 matlab 代码左右翻转一副图像?
- 现代控制理论习题解答与Matlab程序示例
- 现代控制理论习题解答与Matlab程序示例
- 现代控制理论习题解答与Matlab程序示例
- matlab GUI之自定义菜单小结
- matlab GUI之 -- 绘图
- matlab GUI之常用对话框(四)-- 输入对话框 inputdlg、目录对话框 uigetdir、列表对话框 listdlg
- matlab GUI之常用对话框(三)-- dialog \ errordlg \ warndlg \ helpdlg \ msgbox \questdlg
- matlab GUI之常用对话框(二)-- 进度条的使用方法
- matlab中数据保存的相关指令
- Matlab Warning:Variable cannot be saved to a MAT-file whose version is older than 7.3
- matlab2014b 安装libsvm-3.21