matlab gui - 在绘图上选择一个点,并使用按钮运行函数

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

登录评论。

接受答案

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

登录评论。

更多答案(0)

社区宝藏狩猎

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

开始狩猎!