MATLAB GUI axes的ButtondownFCN无效的问题
来源:互联网 发布:varian软件 编辑:程序博客网 时间:2024/05/23 13:57
这两天写了一个matlab gui程序,程序中主要用到了两个axes,目的是通过在axes1中用鼠标选取一个点,而在axes2上显示该点对应的图像。本来想着应该是个很简单的程序,但是在编程的过程中,我却遇到了一个很严重的问题:在axes1上画点后,再利用function axes1_ButtonDownFcn(hObject,eventdata, handles)获取鼠标点中的位置时,ButtonDownFcn()函数却没反映,程序无法执行!就是这个问题,使得本来很简单的一个程序变得很费劲。上网搜了很多资料,发现大家也遇到了这样的问题,但是更多情况下,遇到这种问题的人基本是想获得axes上显示的image或者plot的句柄,进而能够正常使用ButtonDownFcn()函数,而没有说明如何解决获取axes的句柄的问题。下面是我在利用网上的资料后解决这个问题的方法,仅供大家参考。
首先,要感谢这个帖子点击打开链接上给出的一个链接点击打开链接,这是个英文链接,链接中 给出了axes句柄消失的深层原因,对于也加深理解的人,推荐阅读一下,废话不多说,直接说解决方法。
解决这个问题,主要用到guidata()函数,用来获取修改后的句柄结构。使用该函数,最好是在最后对axes修改的地方加入(我是用的方法),或者在每一处修改的地方都加入(个人感觉应该可以,没实验)。例如,我要在axes1上plot一些点,这时候我对axes1做出了修改,应该在plot后,我加入了如下代码:
new_handles = guidata(panoramic);set(new_handles.axes1,'ButtonDownFcn',@axes1_ButtonDownFcn);
其中panoramic表示包含axes的figure,new_handles表示改变后的句柄结构体。由于句柄结构已经修改,可以认为axes1已经不是原来最开始初始化后的那个axes1,这就导致了初始化时定义的ButtonDownFcn()已经失效(失效原因请看给出的英文链接),需要重新对axes1的ButtonDownFcn关联上新的响应函数,第二句就是实现了这么一个功能。
到这ButtonDownFcn()无效的问题已经解决了,但是这时候如果要在axes1_ButtonDownFcn(hObject, eventdata, handles)中对新的句柄中的控件进行操作,程序依然出错,这时候需要在该函数中加入一句:
handles = guidata(panoramic);更新一下handles,这样才能够正常运行。
到这里虽然问题已经全部解决,但是依然存在一些问题,例如为什么
set(new_handles.axes1,'ButtonDownFcn',@axes1_ButtonDownFcn);
时没有把新的句柄结构传给函数,个人感觉是参数传递的问题,但是却不知道怎么进行传递,还希望看到这个帖子的人能够留言告知一声,大家相互学习,共同进步。
- MATLAB GUI axes的ButtondownFCN无效的问题
- Matlab的GUI中figure的WindowButtonDownFcn与axes的ButtonDownFcn
- 关于matlab GUI 中 多个plot(handles.axes) 无法hold on的问题
- Matlab GUI 中多Axes下的鼠标动态跟踪
- MATLAB中GUI的使用技巧(1)之axes
- Matlab axes的使用
- 关于matlab的gui中调获取axes里data cursor的坐标位置
- Matlab GUI 中多Axes下的鼠标动态跟踪[windowbuttonmotionfcn 函数]
- matlab gui(二)对象(axes,line[ezplot,plot],回调函数的写法)
- [Matlab GUI]handles的问题
- Matlab GUI 涉及的问题
- GUI中axes使用subplot时的清空及axes大小的固定的解决方法
- matlab坐标轴axes显示问题
- 【学习笔记】matlab中 pushbutton的buttondownfcn和callback函数有什么区别?
- 【Matlab】关于axes和figure对象的关系
- matlab坐标轴axes对象句柄消失的解决办法
- buttondownfcn 用法 matlab
- 关于matlab GUI重命名的问题。
- 并查集&最小生成树、最短路
- IIS 服务器 支持.apk文件的下载
- asp.net购物车,订单以及模拟支付宝支付(三)---提交订单
- Maven2配置详解
- [LeetCode] Longest Substring Without Repeating Characters
- MATLAB GUI axes的ButtondownFCN无效的问题
- jQuery片段 - 表单action的更改和提交
- Swift编程语言学习1.3——类型安全和类型推测
- Codeforces 444C DZY Loves Colors 水线段树
- ECShop网站 用360浏览器无法添加产品进购物车
- MFC调试技巧之-Trace
- 谈一谈Cocos2d-x中的某些“大小”
- Ubuntu下彻底卸载重装mysql
- LDT代码提示功能