MATLAB Answers

How can I save UIAxes as an image when button is pushed in app designer?

16 views (last 30 days)
Yaren Sever
Yaren Sever on 3 Jul 2020
Commented: Yaren Sever on 4 Jul 2020
How can I save UIAxes as an image when button is pushed in app designer?
newfigure = figure;
copyobj(app.UIAxes, newfigure);
hgsave(newfigure, 'testFIgure.fig');
I tried this but it gives me an error.

  3 Comments

Yaren Sever
Yaren Sever on 4 Jul 2020
2020 release. I solved the problem but now when I push the button, XLabel, YLabel and Title of the UIAxes dissappears. Do you have any idea about this?
% Create new axis
newAxes = axes;
% Copy all objects from UIAxes to new axis
newAxes.Title= app.UIAxes.Title;
newAxes.XLabel = app.UIAxes.XLabel;
newAxes.YLabel = app.UIAxes.YLabel;
copyobj(app.UIAxes.Children, newAxes)
fig2Save = ancestor(newAxes, 'figure');
fig2Save.Visible='off';
%dialog box,save as
filter = {'*.jpg';'*.png'}
[filename, pathname] = uiputfile(filter);
newfilename = fullfile(pathname, filename);
saveas(fig2Save, newfilename);
Yaren Sever
Yaren Sever on 4 Jul 2020
I solved whole problem:
figure;
% Create new axis
newAxes = axes;
% Copy all objects from UIAxes to new axis
newAxes.Title= app.UIAxes.Title;
newAxes.XLabel = app.UIAxes.XLabel;
newAxes.YLabel = app.UIAxes.YLabel;
copyobj(app.UIAxes.Children, newAxes)
%in order to keep titles and labels on uiaxes
xlabel(app.UIAxes, newAxes.XLabel.String);
ylabel(app.UIAxes, newAxes.YLabel.String);
title(app.UIAxes, newAxes.Title.String);
fig2Save = ancestor(newAxes, 'figure');
fig2Save.Visible='off';
%saveas(fig2Save,'myfigg.png')
%close(fig2Save);
%dialog box,save as
filter = {'*.jpg';'*.png'}
[filename, pathname] = uiputfile(filter);
newfilename = fullfile(pathname, filename);
saveas(fig2Save, newfilename);

Sign in to comment.

Answers (1)

Image Analyst
Image Analyst on 3 Jul 2020
Try exportgraphics().

  3 Comments

Yaren Sever
Yaren Sever on 4 Jul 2020
2020 release. I solved the problem but now when I push the button, XLabel, YLabel and Title of the UIAxes dissappears. Do you have any idea about this?
% Create new axis
newAxes = axes;
% Copy all objects from UIAxes to new axis
newAxes.Title= app.UIAxes.Title;
newAxes.XLabel = app.UIAxes.XLabel;
newAxes.YLabel = app.UIAxes.YLabel;
copyobj(app.UIAxes.Children, newAxes)
fig2Save = ancestor(newAxes, 'figure');
fig2Save.Visible='off';
%dialog box,save as
filter = {'*.jpg';'*.png'}
[filename, pathname] = uiputfile(filter);
newfilename = fullfile(pathname, filename);
saveas(fig2Save, newfilename);

Sign in to comment.


Translated by