今天看了一下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

属性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([-,,,]);
set(gcf,'WindowButtonDownFcn',@ButttonDownFcn);
 % 回调函数
function ButttonDownFcn(src,event)
pt = get(gca,'CurrentPoint');
x = pt(,);
y = pt(,);
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

关于matlab鼠标响应的更多相关文章

  1. CSS鼠标响应事件经过、移动、点击示例介绍

    本文为大家介绍下CSS 鼠标响应事件:鼠标经过CSS.鼠标移动CSS.鼠标点击CSS以及示例,喜欢的朋友可以参考下   几种鼠标触发CSS事件. 说明: onMouseDown 按下鼠标时触发 onM ...

  2. 《MFC游戏开发》笔记四 键盘响应和鼠标响应:让人物动起来

    本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9327377 作者:七十一雾央 新浪微博:http:// ...

  3. 3D Slicer Modify Mouse Event 修改3D Slicer中的鼠标响应事件

    在3D Slicer中,我们如果想在自己写的插件中来修改默认的鼠标响应事件的话,就需要先将原有的响应事件链接删除,然后建立自定义的响应事件链接,然后将自己要实现的功能写在响应事件函数中. 比如Slic ...

  4. 3D场景中的鼠标响应事件

    原文:3D场景中的鼠标响应事件 今天要讲的是3D场景中的鼠标响应事件的处理,首先Button的响应是大家熟知的,只要加上一个click事件,然后写一个响应的处理时间就行了.对于二维平面上的一些控件也很 ...

  5. opencv与mfc显示图片操作,MFC的鼠标响应在opencv图片上失效,opencv滚轮事件没有响应问题描述解决。

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/11588758.html 用mfc 与OPENCV编写成. 出了很多冲突异常事件导致鼠标操作没有 ...

  6. Directx11学习笔记【二十一】 封装键盘鼠标响应类

    原文:Directx11学习笔记[二十一] 封装键盘鼠标响应类 摘要: 本文由zhangbaochong原创,转载请注明出处:http://www.cnblogs.com/zhangbaochong/ ...

  7. cocos2d JS 鼠标响应事件

    对于PC和超级本,添加鼠标事件的的处理,可以加强用户的体验,其处理逻辑与触摸事件基本一样,多了一些鼠标特有的事件响应 如滚轮事件(onMouseScroll) cc.eventManager.addL ...

  8. MATLAB鼠标事件

    来源:https://blog.csdn.net/weixin_39090239/article/details/80586930 前记: 人机交互的方式--键盘开关.鼠标.触摸屏.体感传感器(Kin ...

  9. HTML5+JS 《五子飞》游戏实现(六)鼠标响应与多重选择

    上一章我们提到了如果有多条线上的棋子可以被吃掉,那么游戏需要提示用户,让用户选择吃哪条线上的.另外因为是网页游戏,所以一定要实现鼠标单击棋子可以进行操作. 当鼠标移动棋子上面后,切换鼠标指针为手形,移 ...

随机推荐

  1. zip命令

    常用示例: (1)zip -r myfile.zip ./*    ----将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件, -r表示递归压缩子目录下所有文件. (2)unzip - ...

  2. 杭电oj 2095 & 异或^符号在C/C++中的使用

    异或^符号,在平时的学习时可能遇到的不多,不过有时使用得当可以发挥意想不到的结果. 值得注意的是,异或运算是建立在二进制基础上的,所有运算过程都是按位异或(即相同为0,不同为1,也称模二加),得到最终 ...

  3. [Linux] 解压缩 tar 命令详解

    在Linux环境软件安装过程中通常需要用到解压命令,故在此总结下,以方便以后使用,若有不对之处,欢迎指正.   1. 文件压缩      通过压缩算法将文件的体积缩小,同时会将多个文件合并成至一起方便 ...

  4. asp-net-web-api 自定义URl插件

    http://attributerouting.net/#asp-net-web-api https://github.com/johnpapa/CodeCamper/blob/master/Code ...

  5. AngularJs(八) 过滤器filter创建

    大纲 示例 过滤器的使用 创建过滤器 demo 这是整个示例demo 1.filter.js文件 angular.module("exampleApp", []) .constan ...

  6. Java面试题之Class.forName的作用

    按参数中指定的字符串形式的类名去搜索并加载相应的类,如果该类字节码已经被加载过,则返回代表该字节码的Class实例对象,否则,按类加载器的委托机制去搜索和加载该类,如果所有的类加载器都无法加载到该类, ...

  7. 关于我和document.write那点不得不说的事

    一直用document.write()方法向浏览器中显示数据用,把它当做Alert()使用, 看来这样用有些大材小用了,下面说说它的主要用处. document.write()方法可以用在两个方面: ...

  8. sqlserver数据库差异比较

    相信这个功能会对好多网友有帮助,不得不说vs的功能很强大,废话不多说,切入正题 我们可以使用 vs自带的工具比较两个数据库的架构差异和数据差异,这篇文章只是写了架构的差异,我相信看完以后, 如何进行数 ...

  9. Instruments性能检测

    关于Instruments有网友如是说的:"一句话: 内存开销.运行速度.内存泄露 and so on". 如此简单的回答肯定打发不了咱们各位看官和面试官,当然上述表达和下边的网友 ...

  10. #import和#include的区别 关键字@class的作用

    一.#import和#include的区别当我们在代码中使用两次#include的时候会报错:因为#include相当于拷贝头文件中的声明内容,所以会报重复定义的错误但是使用两次#import的话,不 ...