MATLAB: redimensionnement automatique des composants / polices de l'interface graphique

Je vais avoir des problèmes en essayant de faire de mon MATLAB Interfaces graphiques automatiquement redimensionnables.
Après de manière exhaustive la recherche sur le web pour obtenir de l'aide et beaucoup de tests, je ne pouvais pas trouver une solution.

J'ai été le développement d'une interface utilisateur graphique simple (avec MATLAB, sans l'aide de GUIDE) dans mon ordinateur portable (taille de l'Écran/résolution = 1366x768). Une version très simplifiée ressemble à ceci:

MATLAB: redimensionnement automatique des composants /polices de l'interface graphique

Quand je lance la même interface graphique de mon ordinateur de bureau (taille de l'Écran/résolution = 1920x1080), il montre de la manière suivante:

MATLAB: redimensionnement automatique des composants /polices de l'interface graphique

Les dimensions de l'interface utilisateur sont automatiquement initialisés en tenant compte de la screensize (le code est fourni en bas de ce post). Comme vous pouvez le voir (indiquée par les flèches rouges), les polices de caractères/espacement entre les composants ne sont pas redimensionner automatiquement, de sorte que l'interface graphique a le même aspect, peu importe où nous exécutez le fichier.

En outre, lorsque le GUI est redimensionné manuellement, un certain chevauchement des composants se produit:

MATLAB: redimensionnement automatique des composants /polices de l'interface graphique


Le code utilisé pour ce travail minimale exemple est le suivant:

function resizingGUIexample()
%% SET UP GUI
hdl.mainfig = figure(); 
% MANAGE FIGURE DIMENSIONS -------------------------------------------------------------------------------------
set(hdl.mainfig, 'Units', 'pixels');
dims              = get(0, 'ScreenSize');
screenHeight      = dims(4);
verticalMargins   = floor((0.2*screenHeight)/2);          % =10% of the screen height in each side
figureHeight      =       (0.8*screenHeight);
figureWidth       =       (0.8*screenHeight)*(4/3);       % 4/3 Aspect Ratio
set(hdl.mainfig, 'Position', [0, verticalMargins, ... 
                figureWidth, figureHeight]);
movegui(hdl.mainfig,'center')     % move GUI to center
color = get(hdl.mainfig,'Color'); % get background color to hide static texts, etc...
% AXES ---------------------------------------------------------------------------------------------------------
hdl.axes = axes('Parent',   hdl.mainfig,  ...
             'Units',   'Normalized', ...
          'Position',   [0.295 0.05 0.63 0.63*(4/3)]);
% PUSH BUTTONS -------------------------------------------------------------------------------------------------
hdl.donePB = uicontrol(hdl.mainfig,                          ...
                  'Position',   [0.85 0.91 0.075 0.075], ...
                    'String',   'Done',                  ...
                  'Fontsize',   16,                      ...
                     'Units',   'normalized',            ...
                'FontWeight',   'Bold');
% BUTTON GROUP and RADIO BUTTONS -------------------------------------------------------------------------------
hdl.buttonGroup = uibuttongroup('Parent',    hdl.mainfig,  ...
                          'FontSize',    16,           ...
                        'FontWeight',    'Bold',       ...
                   'BackgroundColor',    color,        ...
                             'Units',    'Normalized', ... 
                          'Position',    [0.05 0.69 0.2 0.2]);
titleBG = sprintf('Intensity\nNormalization');
set(hdl.buttonGroup, 'Title', titleBG);
hdl.VolumeRB = uicontrol(hdl.buttonGroup,                   ...
                             'Style',    'radiobutton', ...
                            'String',    'Volume',      ...
                          'FontSize',    14,            ...
                        'FontWeight',    'Bold',        ...
                             'Units',    'normalized',  ...
                   'BackgroundColor',    color,         ...
                          'Position',    [0.1 0.67 0.8 0.3]);
hdl.SliceRB = uicontrol(hdl.buttonGroup,                   ...
                            'Style',    'radiobutton', ...
                           'String',    'Slice',       ...
                         'FontSize',    14,            ...
                       'FontWeight',    'Bold',        ...
                            'Units',    'normalized',  ...
                  'BackgroundColor',    color,         ...
                         'Position',    [0.1 .25 0.8 0.3]);
end

Toutes les idées de comment je peut résoudre ces problèmes?

Merci beaucoup à l'avance.

Salutations,

Fábio Nery

EDIT1: ailleurs, je suis très ouvert aux suggestions pour améliorer les moyens d'initialiser l'interface graphique des dimensions et des stratégies pour éviter les problèmes lors de l'exécution de Gui dans les différents moniteurs/résolution de l'écran.

source d'informationauteur fnery