Matlab GUI 鼠标触发事件求助!!!小白一只,还望各位大神相助,跪谢!!!

问题是这样的,我想通过四个按钮控制,触发不同的鼠标点击事件。比如有控钮1,2,3,4,我点击控钮1后,鼠标在图片上点击出现蓝叉点;我点击控钮2后,鼠标在图片上单击出现红叉... 问题是这样的,我想通过四个按钮控制,触发不同的鼠标点击事件。比如有控钮1,2,3,4,我点击控钮1后,鼠标在图片上点击出现蓝叉点;我点击控钮2后,鼠标在图片上单击出现红叉点,以此类推。。。我现在想通过一个handles.Mode的数值变量来确定哪个按钮被触发,比如点击控钮1后,在其callback中添加handles.Mode=1,以此类推。然后在WindowsButtonDownfcn中,添加Switch handles.Mode,来确定是哪个case,以执行不同操作。但是现在发现,这样做后,虽然按按钮时handles.Mode值会改变,但是对于鼠标触发事件,好像捕捉不到它的值的变化,一直以最初Mode的值所代表的case进行执行,代码如下:
Switch handles.optMode
Case 1
If p(end,1)>0&&p(end,1)<handles.ximage&&p(end,2)>0&&p(end,2)<handles.yimage
handles.dataCount=handles.dataCount+1;
handles.linedata(handles.dataCount,:)=p(end,1:2);
set(handles.datenzahl,'String',num2str(handles.dataCount));
hold on;
plot(p(end,1),p(end,2),'b*');
guidata(hObject, handles);
end

case 2
if p(end,1)>0&&p(end,1)<handles.ximage&&p(end,2)>0&&p(end,2)<handles.yimage&&handles.axesCount<3
handles.axesCount=handles.axesCount+1;
handles.axesdata(handles.axesCount,:)=p(end,1:2);
set(handles.punktzahl,'String',num2str(handles.axesCount));
hold on;
plot(p(end,1),p(end,2),'r+');
guidata(hObject, handles);
end
end
展开
 我来答
dukinkin
2014-06-22 · TA获得超过1.3万个赞
知道大有可为答主
回答量:2444
采纳率:90%
帮助的人:946万
展开全部
你究竟使用handles.Mode

还是handles.optMode来表示状态?

case 情况里面的代码,只有plot所用的符号不同
所以没有必要重复那么多代码吧

其他代码都可以写在swith case语句之外
只用在不同case值中写相应的plot语句就可以了
更多追问追答
追问
你好,是handles.optMode,提问里打错了,不好意思。关键是现在optMode的值的变化,不会引起不同的case下的响应,鼠标点击时候,只会响应optMode初始化的值所对应的case事件,这是怎么回事儿?是因为WindowsButtonDownfcn就是这个特点吗?困扰好久,如果可以,还请帮忙解答一下。
追答
是不是你在按钮的callback里面改变了handles.optMode的值
但是没有用guidata(hObject, handles);更新数据

所以实际上没有改变
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式