MATLAB Answers

R Hebi

save GUI fig by name from edit text

Asked by R Hebi
on 15 Nov 2019 at 18:28
Latest activity Edited by Rik
on 15 Nov 2019 at 21:02
I am trying to save a figure in GUI, I want when the user click on a push button the below window appear.
I applied the follwoing function:
filter = {'*.m';'*.emf';'*.*'};
[file, path] = uiputfile(filter);
but when I press (save) nothing is saved. The problem is how to connect my figure to the above function.


Show 1 older comment
Adam Danz
on 15 Nov 2019 at 19:00
Abdullah Alraigi,'s answer moved here as a comment
The figure is embeded with GUI
I used Guide
on 15 Nov 2019 at 19:06
Note that copying the figure is not going to copy the callbacks, so you will end up with a figure that is only a visual copy of your GUI but no longer has any functionality.
Adam Danz
on 15 Nov 2019 at 19:14
I was worried about that too but it turns out that the goal was to copy the embedded axes onto an external figure.

Sign in to comment.

1 Answer

Answer by Adam Danz
on 15 Nov 2019 at 18:59
 Accepted Answer

Place this code in a callback function designed to save the figure. See inline comments for details.
newFig = figure(); % Create a new parent figure
newAx = copyobj(handles.axes1, newFig); % Copy your GUI axis to the new figure
% ^^^^^^^^^^^^^ Put your axis handle here
% Reposition the axis to default position within the new figure
newAx.Units = 'Normalize';
newAx.Position = [.13, .11, .76, .82];
% Ask user for path and filename
[file, path] = uiputfile('.fig');
% Save figure and print out a confirmation.
fprintf('Figure saved: %s\n', file) % optional


Adam Danz
on 15 Nov 2019 at 19:11
Abdullah Alraigi's answer moved here as a comment.
Thx adam
it works as wanted
Adam Danz
on 15 Nov 2019 at 19:12
Just a small request - in the future, try to use the comments section for discussion and reserve the answer section for answers.
Glad I could help! ;)

Sign in to comment.