matlab gui 鼠标坐标,Matlab GUI 怎样获取坐标轴上当前点坐标?

获取坐标轴上当前点坐标,目前我知道有三种方法,现总结如下:

1. 在 figure1_windowbuttondown(GUI 建立之后默认的 Tag 为 figure1)

函数中,用currentpoint =

get(handles.axes1, 'CurrentPoint'); 可以返回一个行向量, 表示鼠标位置当前的横纵坐标( axes1

是当前坐标轴的Tag, 也可以写gca )。

2. 在 axes1_Buttondown

函数中使用​currentpoint = get(hObject,

'CurrentPoint');

3. 使用 ginput()

函数,具体用法可以查用户手册, 或者参考xiaojidan2011​的博客:

http://blog.csdn.net/xiaojidan2011/article/details/7969793。

下面说下三种方法的特色:

1.

第一种方法(figure1_windowbuttondown函数)非常直观,但是有个缺陷​​,比如说我要在

axes1 上画一条垂直于坐标轴的直线,只要我单击左键直线就能画出来。这个时候就需要获得当前点的坐标。若是在 axes1

上单击左键,直线可以画出来,这是我想要的效果没错;但是当我点击 axes1

轴以外的区域时,它也能在坐标轴上画出一条线,这就让我无语了。目前不知道有什么好的解决办法 (限于该函数)。

2.(axes1_Buttondown

函数)这是我寻求上面提到的问题的解决办法,同样的代码复制到这个函数中​,可以避免单击其他区域仍然在

axes1

画线的尴尬;当时我通过这个函数解决了上述问题时,心中涌现一种难以言喻的兴奋,但是当我点击右键时它也画出了一条线时,心突然变得凄凉,下一刻就删掉了这个函数;现在来看,自己太傻了,在这个函数中只要加上这样一句代码就可以判断是否单击的为左键:

​if

strcmp(get(handles.figure1,'SelectionType'), 'normal')

(不要忘了写end)

这里的 handles.figure1​ 不能改为 hObject(表示当前坐标轴),

否则会出错。当时我就是写成 hObject,

然后一直没想通到底是为什么错;也许一件事情做久了应该停下来休息一下,我当时一直在想这些问题,搞不好思维就僵化了,然后几天不去管这些事情,莫名其妙地就找到了解决方法。

3.

(ginput函数)我在放弃​前两种方法后,就选择它了。但当我写完代码使用它时,惊呆我了,干嘛出现一个十字光标!!!这特么太影响美观了吧,反正目前我是不需要这种东西。

掂量再三,最后还是选用方法一去解决我的问题,不过在总结的时候,发现方法二​解决了左右键的问题,等下还是去修改一下代码吧。

​​注意:

在第二种方法( axes1_Buttondown 函数 )中​,

有一个值得注意的问题,就是当你在坐标轴上画了图,或者是导入了图片,不论你怎么点击,就是获得不了当前点的坐标。那是因为这个图形对象将坐标轴对象给覆盖了,这个时候你需要的是获得在图形上的坐标,具体方法我似乎成功过,下次再总结,可以到论坛上查询有关问题,很多高手为我们指明了方向。​

​​

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值