MATLAB GUI -在绘图上选择一个点,用一个按钮运行一个函数

59次浏览(最近30天)
我想要做的是获取用户在给定的图上点击了哪个点,然后,当他点击按钮时,一个接收该点(X,Y)坐标的函数将运行。如果在绘图中没有选择点,就会显示一条警告消息,告诉用户选择一个点。
这是可能的吗?
2评论
Pedro augusto de Castro e Castro
我正在使用指南。
如果可以使用按钮的方式是优选的,因为这是一个其他功能可能需要一段时间才能运行,并且如果每次用户按下绘图时执行,那么它就不会是最佳的。但是,如果这是不可能的,只需点击绘图并具有代码即可执行。

登录评论。

接受的答案

杰夫•海斯
杰夫•海斯 于5月5日20日
Pedro - 在您的GUI的OpentFcn中,为轴添加一个按钮:
集(handles.axes1,'buttondownfcn',@ axesbuttondowncallback);
回调函数的名称为 axesButtonDownCallback 。回调会看起来像
函数axesbuttondowncallballballballballballballballballballballballballballback(febupt,eventdata)
handles.currentpoint = get(freming,'prestpoint');
Guidata(令人厌流,处理);
我们得到了 CurrentPoint 轴的财产( 新奇 )并将其保存到 把手 结构体。然后我们需要保存更新的结构 guidata 。这很重要 - 如果您不这样做,那么其他回调将无法访问我们添加的此字段 把手 。然后按下按钮回调
函数按钮1_callback(fhref,eventdata,handles)
pushbutton1的% hObject句柄(参见GCBO)
%EventData保留 - 在未来版本的MATLAB中定义
%处理手柄和用户数据的结构(见Guidata)
如果〜isfield(手柄,“currentPoint”)||isempty(handles.currentpoint)
fprintf('你需要选择一个点!\ n');
其他的
currentPoint = handles.currentPoint;
Handles.CurrentPoint = [];
guidata (hObject处理);
%用点做点什么
结尾
注意我们如何检查'currentPoint'字段是否存在 把手 结构,或者是否存在,是否为空。如果其中一个为真,则提示用户选择一个点(用对话框替换fprintf)。如果我们确实有一个点,那么我们从结构中提取它,然后在结构中重置该字段,这样用户将在下次按下按钮时提示选择一个新的点。(再次注意,调用 guidata 很重要。)
10评论
杰夫•海斯
杰夫•海斯 于5月5日20日
没问题!对于调试,只需将您感兴趣的代码行中的断点放入。

登录评论。

更多答案(0)

社区寻宝

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!