【发布时间】:2019-10-16 05:51:43
【问题描述】:
我有一个 GUI,用户可以在其中单击一个按钮来放置一个点 (drawpoint)。放置点后,计算它与之前选择的静态点之间的欧几里得距离。
我希望能够移动按钮创建的点;这样,在移动该点后,欧几里得距离被重新计算并吐到一个文本框中。
我尝试使用addlistener(在 GUI_OpeningFcn 位置)作为创建点;但是,我无法弄清楚如何执行此操作,因为在创建按钮之前手柄不存在。
因此问题是:如何在移动点时动态执行计算并吐出值?下面是按钮的代码(我想要的)。但是移动点后如何重新计算呢?
也许,使用WindowbuttonDownFcn 可以解决这个问题吗?同样,只是不确定如何将其合并到 GUI 中。
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
h = findobj('Name', 'N');
Ndata = guidata(h);
axes(Ndata.axes1);
mypoint = drawpoint;
handles.distx = mypoint.Position(1);
handles.disty = mypoint.Position(2);
xp = Ndata.xpix;
yp = Ndata.ypix;
handles.poix = abs(double(handles.distx) - double(Ndata.ISOx))/str2double(xp.String);
handles.poiy = abs(double(handles.disty) - double(Ndata.ISOy))/str2double(yp.String);
handles.poi = sqrt(handles.poix^2 + handles.poiy^2)+1.3;
set(handles.edit1, 'Value', handles.poi);
set(handles.edit1, 'String', num2str(handles.poi));
% Update handles structure
guidata(hObject, handles);
【问题讨论】:
标签: matlab matlab-guide