How to Limit figure size?

The minimum size should be constant but I have been unable to achieve this. I read some stuff but nothing seems to work properlly. Any help would be apreciated.

Answers (3)

If you're using a recent version of Matlab, you can accomplish this via the SizeChangedFcn of the figure:
h = figure;
figszfun = @(~,~) set(h, 'position', max([0 0 200 200], h.Position));
h.SizeChangedFcn = figszfun;
In this example, the figure will be always be at least 200 x 200 pixels.
For older versions (pre-2014b), the same thing can be accomplished via the ResizeFcn.

3 Comments

Jan
Jan on 18 Dec 2015
Edited: Jan on 18 Dec 2015
If this works, why doesn't it cause an infinite recursion? Changing the figure size inside the function called after resizing a figure...
Armindo
Armindo on 18 Dec 2015
Edited: Armindo on 18 Dec 2015
Hi thank you for the help but this dont work properlly. Image is always flickering
Hmm, good question, Jan, but recursion doesn't seem to be a problem, at least not on my system. I do get the flicker effect if I manually resize the figure smaller than the limit, since the mouse-set size and resize function are fighting each other, but that stops as soon as I release the mouse click.
Perhaps that's the difference between ResizeFcn and the newer SizeChangedFcn? I really haven't looked into it much.

Sign in to comment.

Try setting the figure position in the form [xll yll width height] where xll and yll are the x and y positions of the lower left corner of the figure and width and height are, well, the width and height of the figure. Units are in pixels.
set(gcf,'pos',[10 10 300 200])
Jan
Jan on 18 Dec 2015
This FEX submission is updated soon to support modern Matlab versions: http://www.mathworks.com/matlabcentral/fileexchange/38527-limit-figure-size

1 Comment

Armindo
Armindo on 18 Dec 2015
Edited: Armindo on 18 Dec 2015
Hi Jan,
Thank you for the help. I am using your function. I changed the line 99
This: jClient = jFrame.fHG1Client;
for this: jClient = jFrame.fHG2Client;
and now is working.
I just dont understand how is possible that matlab dont have a native function that do this simple thing as well as a function to minimize and maximize a figure. This is a recursive problem that has many years but is never solved...

Sign in to comment.

Categories

Asked:

on 17 Dec 2015

Commented:

on 18 Dec 2015

Community Treasure Hunt

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

Start Hunting!