フィルターのクリア

Turn non-resizeable figure into resizeable figure?

13 ビュー (過去 30 日間)
Frank
Frank 2014 年 11 月 18 日
コメント済み: Frank 2014 年 11 月 21 日
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!

回答 (3 件)

Orion
Orion 2014 年 11 月 18 日
編集済み: Orion 2014 年 11 月 18 日
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 2014 年 11 月 20 日
編集済み: Frank 2014 年 11 月 20 日
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 件のコメント
Orion
Orion 2014 年 11 月 20 日
set(findall(newfig,'-property','Units'),'Units','Normalized')

サインインしてコメントする。


Frank
Frank 2014 年 11 月 21 日
編集済み: Frank 2014 年 11 月 21 日
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 件のコメント
Orion
Orion 2014 年 11 月 21 日
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 2014 年 11 月 21 日
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!!

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeInteractive Control and Callbacks についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by