zoukankan      html  css  js  c++  java
  • 关于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
    ',x,y);

    附:http://zhidao.baidu.com/link?url=10iOFLUKbZHWtwQr02h7LjAYomOQXzJdufxQkBrOi-8HJZmx9fJ2WA1UDbtX0zkg-KS_aOykjmzLq4dCNOYrDxt4VrnnzFJD-sI8uQ871Hu

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

  • 相关阅读:
    公司实习职位与要求
    段子
    Python 练习项目1 弹球游戏
    精准控制PWM脉冲的频率和数量
    ST Link 调试问题总结
    验证
    大道至简(第六章)读后感
    动手动脑
    大道至简(第五i章)读后感
    数组课后作业
  • 原文地址:https://www.cnblogs.com/wangduo/p/5572901.html
Copyright © 2011-2022 走看看