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

  • 相关阅读:
    使用 Dockerfile 定制镜像
    UVA 10298 Power Strings 字符串的幂(KMP,最小循环节)
    UVA 11090 Going in Cycle!! 环平均权值(bellman-ford,spfa,二分)
    LeetCode Best Time to Buy and Sell Stock 买卖股票的最佳时机 (DP)
    LeetCode Number of Islands 岛的数量(DFS,BFS)
    LeetCode Triangle 三角形(最短路)
    LeetCode Swap Nodes in Pairs 交换结点对(单链表)
    LeetCode Find Minimum in Rotated Sorted Array 旋转序列找最小值(二分查找)
    HDU 5312 Sequence (规律题)
    LeetCode Letter Combinations of a Phone Number 电话号码组合
  • 原文地址:https://www.cnblogs.com/wangduo/p/5572901.html
Copyright © 2011-2022 走看看