关于matlab鼠标响应

今天看了一下Matlab中响应鼠标的事件,整理如下,

(1)函数WindowButtonMotionFcn,当鼠标在窗口上运动的时候就会相应此函数,于是在此函数中可以设置运动时想要的代码,如:改变鼠标的形状:

1 if 满足某一个条件
2     set(gcf,‘Pointer‘,‘hand‘) % 设置为手的形状
3 else
4     set(gcf,‘Pointer‘,‘arrow‘) % 设置为箭头的形状
5 end

(2)函数WindowButtonDownFcn,当鼠标按下去的时候就会响应的函数,但是鼠标按下分为左键和右键,如何区分:

1 if strcmp(get(gcf,‘SelectionType‘),‘alt‘)
2 % 此时即为右键
3 elseif strcmp(get(gcf,‘SelectionType‘),‘normal‘)
4 % 此时即为左键
5 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文件。

那么为显示当前鼠标按下时的坐标值,我们可以将其定义为一个坐标获取和显示程序。

例如:

1 % 主函数
2 function test_mouse_track()
3 figure;
4 axis([-10,10,0,5]);
5 set(gcf,‘WindowButtonDownFcn‘,@ButttonDownFcn);
1 % 回调函数
2 function ButttonDownFcn(src,event)
3 pt = get(gca,‘CurrentPoint‘);
4 x = pt(1,1);
5 y = pt(1,2);
6 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

时间: 2024-10-06 20:37:57

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

鼠标响应文字跳动效果

前端开发whqet,csdn,王海庆,whqet,前端开发专家 昨天看到html5tricks上的一篇文章<jQuery鼠标滑过文字跳动动画插件>,止不住手痒用sass.css3实现一下,并进行了扩展,希望能对大家有所帮助. ---------- ------------------------------- 在线研究点击这里,下载收藏点击这里. ------------------------ ------ 首先来个广告,嘎嘎,前面两篇博文<纯CSS3文字效果推荐>.<CS

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

在3D Slicer中,我们如果想在自己写的插件中来修改默认的鼠标响应事件的话,就需要先将原有的响应事件链接删除,然后建立自定义的响应事件链接,然后将自己要实现的功能写在响应事件函数中. 比如Slicer中默认的鼠标左键拖拽,是任意旋转视图中的Camera,默认中的滑轮操作是拉远和拉近视图摄像机,默认的鼠标右键操作也是拉远和拉近视图摄像机的操作.这样滑轮就和鼠标右键的功能重复了,我们可以让鼠标右键实现其他的功能.比如在模型的Pitch, Yaw, Roll三个旋转方向上(其实旋转的只是试图中的摄

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

原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/11588758.html 用mfc 与OPENCV编写成. 出了很多冲突异常事件导致鼠标操作没有响应 当opencv窗口与mfc控件绑定时,可以认为opencv绑定区域覆盖在mfc 控件上,此时mfc本身的鼠标响应在此区域失效,只能调用opencv的鼠标响应事件. 而当你调用opencv的鼠标滚轮事件时候又会没有反应,此时是因为mfc的鼠标滚轮事件优先级别更好 ,只能在这里用mfc的鼠标滚轮响

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

上一章我们提到了如果有多条线上的棋子可以被吃掉,那么游戏需要提示用户,让用户选择吃哪条线上的.另外因为是网页游戏,所以一定要实现鼠标单击棋子可以进行操作. 当鼠标移动棋子上面后,切换鼠标指针为手形,移开棋子后再切换回默认的状态: el.mousemove(function (e) { var o = el.offset(); var p = { x: e.clientX - o.left, y: e.clientY - o.top }; el.css("cursor", "d

windows鼠标响应相关知识

1.确定鼠标键点击的是哪个窗口.windows会用表记录当前荧屏上各个窗口的区域坐标,当鼠标驱动程序通知windows鼠标键按下了,windows根据鼠标的坐标确定点击的是哪个窗口. 2.确定鼠标键点击的是窗口的哪个部位.windows会想鼠标键点击的窗口发送WM_NCHITTEST消息,来询问鼠标键点击的是窗口的哪个部位.(WM_NCHITTEST的消息响应函数的返回值会通知Windows).通常来说,WM_NCHITTEST消息是系统来处理的,用户一般不会主动去处理它(也就是说,WM_NCH

Matlab学习-------GUI鼠标事件响应(鼠标划线实例)

(1)打开GUIDE,添加一个坐标轴并保存 (2)添加鼠标响应事件:鼠标按下事件,鼠标运动事件,鼠标松开事件 (3)对相应事件编写程序 function varargout = guide_m(varargin) % GUIDE_M MATLAB code for guide_m.fig % GUIDE_M, by itself, creates a new GUIDE_M or raises the existing % singleton*. % % H = GUIDE_M returns

Opencv下图像对鼠标事件的响应

直接上代码: //////////////////////////////////////////////////////////////////////// // // 该程序从文件中读入一幅图像,响应在图片上的左键右键消息 // 并显示点击图像的坐标,然后显示出来. // //////////////////////////////////////////////////////////////////////// #include <stdlib.h> #include <stdi

mfc 鼠标、键盘响应事件

一.基本目标 1.有一个基本的MFC程序,点击“关闭”则“关闭”这个程序,这点没什么好讲的,把自带的“取消”按钮,右键->属性的Caption改成“关闭”二字就可以了 2.鼠标在对话框中移动,则显示其位置信息,这个坐标是窗口内部坐标 3.如果按着鼠标右键移动鼠标,则在这个工程的标题栏会显示“按着鼠标右键移动鼠标”,松开鼠标右键回复如初 4.如果按着键盘上的Ctrl键或者Shift键在对话框的窗口中移动鼠标,标题栏同样会有相应的提示,是否同时按下也会有提示 5.左击对话框,会弹出对话框,显示鼠标位

Static控件响应鼠标事件

tatic控件默认是不支持响应鼠标消息的,如果把其ID从IDC_STATIC改成其他的,可见其可以响应BN_CLICKED消息,但这远远不够.但是MS也没有把路堵死,我们可以利用SetWindowLong,动态增加 其SS_NOTIFY风格,使其支持鼠标响应. 1.不重载CStatic,使静态文本控件支持鼠标消息的办法 //可以在InitDialog中添加 DWORD dwStyle = m_static1.GetStyle(); dwStyle |= SS_NOTIFY; SetWindowL