Turn non-resizeable figure into resizeable figure?

13 vues (au cours des 30 derniers jours)
Frank
Frank le 18 Nov 2014
Commenté : Frank le 21 Nov 2014
Hi, I created a GUI with 2 axes, which has to be not resizeable. In addition, I would like to install a button to save the GUI as a resizeable figure. My attempt was to use copyobj to copy the figure into a new window and then set Resize to 'on', i.e.
newfig = copyobj (gcf,0);
set(gcf, 'Resize', on)
Matlab creates a new figure, which however still is not resizeable. How do I reactivate the option to resize the window of the figure?
Thank you!

Réponses (3)

Orion
Orion le 18 Nov 2014
Modifié(e) : Orion le 18 Nov 2014
Hi,
In your callback function, don't use gcf, but the handle of your figure ( figure1 by default)
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)
newfig = copyobj(handles.figure1,0); % copy the the figure to an exact new one
set(newfig, 'Resize', 'on'); % the copy is resizable

Frank
Frank le 20 Nov 2014
Modifié(e) : Frank le 20 Nov 2014
Thanks, that is working perfectly. Is there an option to 'handle' ALL axes, drop-down-menus etc. in that new figure and have them change size according to window size? I would usually do this by switching their units to 'normalized', but this is not working:
newfig = copyobj(handles.figure1,0);
set(gcf, 'Resize', 'on'); %this is working now
hAxes = findobj(gcf,'type','axes');
set (hAxes, 'Units', 'normalized');
  1 commentaire
Orion
Orion le 20 Nov 2014
set(findall(newfig,'-property','Units'),'Units','Normalized')

Connectez-vous pour commenter.


Frank
Frank le 21 Nov 2014
Modifié(e) : Frank le 21 Nov 2014
Thanks for the answer. Now everything is changing size according to window size except for the axes. They keep constant sizes even though they are the most important element to change size. This is the code I'm using:
newfig = copyobj(handles.figure1,0);
set(newfig, 'Resize', 'on');
set(findall(newfig,'-property','Units'),'Units','Normalized')
  2 commentaires
Orion
Orion le 21 Nov 2014
Weird. It works for me (R2014a), and I'm pretty sure, this line works for previous releases (I don't know for the 2014b)
Anymay, try this line with a simple gui with just an axe and a button. If it works, then the problem comes from your gui, in which you should have configure something, that prevent resizing.
Frank
Frank le 21 Nov 2014
Yup, that's probably it. I'll have to check the rest of my GUI. Thanks for your time so far, it's been very helpful!!

Connectez-vous pour commenter.

Catégories

En savoir plus sur Graphics Object Identification dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by