how to put an app designer window in the center of the screen?

15 ビュー (過去 30 日間)
rumin diao
rumin diao 2022 年 6 月 23 日
コメント済み: Image Analyst 2022 年 6 月 27 日
hi, i've been designed an app in matlab, now the problem is that i want to put the app window in the center of the screen without setting position by myself. i want to write some codes so that everytime anyone open the app, the window is automatically always in the center. is it possible and how to realize?
thank you!
the window now:
what i expect:
without setting this by the app user:

採用された回答

dpb
dpb 2022 年 6 月 23 日
編集済み: dpb 2022 年 6 月 23 日
While you can do this using the .ScreenSize and .MonitorPositions properties retrieved from groot, I'd say it's quite rude and very egotistical to make your app appear in the middle of your users' screens regardless of their preferences.
It would be much better to let it default originally(*) and then save the position on close in a usersettings data structure and reload in last position on subsequent opens. Each user gets/keeps his own screen space that way.
(*) Or, alternatively, add a user preferences item in the menu that lets user select a given general location -- 'NW', 'NE', etc., ... something like what legend has for options. Just don't be adamant that your app must own the middle of the screen.
  2 件のコメント
Image Analyst
Image Analyst 2022 年 6 月 27 日
I wouldn't say it's "quite rude and very egotistical" to come up centered instead of where they happened to have last left the app on the screen. A lot of times users are rearranging various windows on the screen, and where they last moved it to is not necessarily where they would like to have it the next time they launch the app. In fact usually my apps have so much stuff, including an image or two that I want to enlarge as much as possible so that users can see details better, that I maximize my apps by setting the WindowState property to 'maximized'.
Anyway, @rumin diao if you want my code, then scroll down to see it.

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

その他の回答 (1 件)

Image Analyst
Image Analyst 2022 年 6 月 27 日
I have a function to center the GUI on the screen. See below.
% Centers the figure on the screen.
function CenterFigure(handles)
try
% The figure Position property does not include the window borders,
% so this example uses a width of 5 pixels on the sides and bottom and 30 pixels on the top.
% borderWidth = 5;
% titleBarWidth = 30;
% Ensure root units are pixels:
g = groot;
g.Units = 'pixels';
% Get the screen size in pixels:
screenSize = g.ScreenSize;
screenWidth = screenSize(3);
screenHeight = screenSize(4);
% Get the size of the window.
childrenFigure = g.Children;
if numel(childrenFigure) > 1
return;
end
childrenFigure.Units = 'pixels';
initialFigurePosition = childrenFigure.Position;
% Create an array that will center it.
centeredX = (screenWidth - initialFigurePosition(3)) / 2;
centeredY = (screenHeight - initialFigurePosition(4)) / 2;
centeredPosition = [centeredX,...
centeredY,...
initialFigurePosition(3),...
initialFigurePosition(4)];
% Send the centered coordinates to the figure to actually cause the figure to move.
childrenFigure.Position = centeredPosition;
catch ME
errorMessage = sprintf('Error in program %s, function %s(), at line %d.\n\nError Message:\n%s', ...
mfilename, ME.stack(1).name, ME.stack(1).line, ME.message);
uiwait(errordlg(errorMessage));
return;
end
return; % from CenterFigure()

Community Treasure Hunt

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

Start Hunting!

Translated by