Data Cursor Position in GUI
显示 更早的评论
I am building a GUI in GUIDE.
The user selects an Image file, which is then displayed in a separate figure/window.
The datacursormode is activated for the figure, and the datatip text is customized.
I want to retrieve the data-cursor's position through the myupdatefcn. I am able to display the position info each time the user clicks somewhere on the image, but I can neither set or setappdata the position for use in another function.
...
imshow(I);
dcm_obj = datacursormode(f);
datacursormode on;
set(dcm_obj,'UpdateFcn', @myupdatefcn )
end
function txt = myupdatefcn(~, event_obj)
pos = event_obj.Position;
disp(['You clicked X:',num2str(pos(1)),', Y:',num2str(pos(2))]);
txt = {'Point to Compute'};
end
How can I retrieve the data cursors' position for use in a separate function in my m file?
p.s. I've tried getCursorInfo(dcm_obj). I haven't been able to get it to work though, even by using a pause or waitforbuttonpress command.
p.p.s. I've read through http://www.mathworks.com/help/techdoc/ref/datacursormode.html. It hasn't helped me much.
Thanks in advance for any help.
采纳的回答
更多回答(1 个)
Travis
2011-7-11
I am doing a very similar thing, although I am having trouble getting mine to work. I am making a GUI using GUIDE. I need to gather the position info from an axes plot on the GUI, for any number of clicks. In other words I need "pos" to become available in the workspace at any click in the "MomentCurv" axes. Any help is much appreciated!
Here is the opening function:
function Analysis_OpeningFcn(hObject, eventdata, handles, varargin)
X = ...
Y = ...
axes(handles.MomentCurv);
datacursormode on;
plot(X,Y);
dcm_obj = datacursormode(gcf);
set(dcm_obj,'UpdateFcn',@myupdatefcn);
pos = get(0,'userdata');
guidata(hObject, handles);
end
Here is the myupdatefunction:
function txt = myupdatefcn(empt,event_obj)
pos = event_obj.Position;
txt = {['Phi: ',num2str(pos(1))],['Moment: ',num2str(pos(2))]};
set(0,'userdata',pos);
end
1 个评论
Try what @Loginatorist said above. It works with no problem:
Add this line to your myupdatefcn:
set(0,'userdata',pos);
Then from any workspace you can do:
pos = get(0,'userdata');
类别
在 帮助中心 和 File Exchange 中查找有关 Data Type Identification 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!