IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques Discussion :

Problème d'apparence d'une interface graphique sur différentes machines


Sujet :

Interfaces Graphiques

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 171
    Points : 80
    Points
    80
    Par défaut Problème d'apparence d'une interface graphique sur différentes machines
    bonjour,

    j'ai un probleme de lisibilité de mon interface sur d'autre machine. car celle ci a été programmé sur mon PC.

    est ce que vous pouvez me dire qu'elle est l'instruction que je dois ecrire? est ce que je dois l'ecrire sur chaque fichier .m de mon interface?

    merci beaucoup pour votre reponse.

    cordialement,
    -----------------------
    Cordialement
    Developpeur82

  2. #2
    Expert confirmé
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Points : 4 039
    Points
    4 039
    Par défaut
    cette note technique t'explique comment créer un GUI qui garde la même apparence quelle que soit la plateforme.
    MATLAB 8.2 (R2013b)

    le blog des MATLAB geeks

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 171
    Points : 80
    Points
    80
    Par défaut
    en fait j'ai lu le paragraphe qui est sensé resoudre mon prob. franchement je n'ai pas bien compris. ils ne fournisse aucun exemple concret. ils disent comment adapté l'ecriture par set().

    mon prob est avec la taille des fenetres qui sont des fois coupé sur d'autre ordinateur et on vois rien.

    est ce qu'il s'agit d'une instruction que je dois ecrire dans mes fichiers .m? qui s'adapte a la resolution de l'ecran de l'utilisateur?


    Merci pour votre aide....

    Cordialement,
    -----------------------
    Cordialement
    Developpeur82

  4. #4
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    2 possibilités :
    1. l'unité normalized
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    f=figure('Units','normalized','Position',[0.1 0.1 0.5 0.5])
    Et mettre aussi tous les objets en unité normalized

    2. Utiliser les propriétés de l'écran qu'on récupère avec get(0) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    %on suppose que les unités de l'écran et de la figure sont en pixels
    posScreen=get(0,'screensize');
    posFigure=[10 10 posScreen(3)/2 posScreen(4)/2];
    f=figure('Position',posFigure);
    Règles du Forum

    Adepte de la maïeutique

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 171
    Points : 80
    Points
    80
    Par défaut
    bonjour,

    désolé pour la réponse tardive. Je vous remercie pour la réponse.

    En ce qui concerne la deuxième réponse, je trouve qu'elle est très bien et c'est celle la que je cherche.

    Par contre, à quel niveau du fichier .m je dois l'écrire? Est ce qu'il faut l'écrire dans toutes les fenetres .m de chaque interface?

    merci

    cordialement,
    -----------------------
    Cordialement
    Developpeur82

  6. #6
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Citation Envoyé par developpeur82
    par contre a quel niveau du fichier .m je dois l'ecrire? est ce qu'il faut l'ecrire dans tous les fenetres .m de chaque interface?
    => oui.
    Le plus simple c'est de créer une petite fonction qui pourra être appelée par chaque interface au moment de la création de la figure :

    Dans le cas où toutes tes fenêtres vont faire la même taille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function set_ma_position(handleFig)
    posScreen=get(0,'screensize');
    posFigure=[10 10 posScreen(3)/2 posScreen(4)/2];%a modifier selon ton besoin
    set(handleFig,'Position',posFigure);
    Et dans tes .m de création de figure juste après la création
    (Si tu as utilisé GUIDE dans la fonction <nomfig>_OpeningFcn) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    set_ma_position(handleFig);%où handleFig est le handle de ta figure
    Règles du Forum

    Adepte de la maïeutique

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 171
    Points : 80
    Points
    80
    Par défaut
    rebonjour, merci beaucoup pour votre reponse.

    j'ai essayé ce que vous m'avez dit, mais dans ce cas mon interface ne demarre pas!!! Il n'y a pas de problème de compilation mais en double cliquant sur le raccourci .exe le programe ne démarre pas... j'ai même essayé de taper le non de ma fenêtre principale dans le "command window" mais ça donne rien...

    A votre avis, quel est le problème?

    merci

    J'ai appliqué ce que vous m'avez dit dans mes 3 fichiers .m (3 fenetres). voila le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    function set_ma_position(handleFig)
    posScreen=get(0,'screensize');
    posFigure=[10 10 posScreen(3)/2 posScreen(4)/2];%a modifier selon ton besoin
    set(handleFig,'Position',posFigure);
     
    gui_Singleton = 1;
    gui_State = struct('gui_Name',       mfilename, ...
                       'gui_Singleton',  gui_Singleton, ...
                       'gui_OpeningFcn', @Interface_OpeningFcn, ...
                       'gui_OutputFcn',  @Interface_OutputFcn, ...
                       'gui_LayoutFcn',  [], ...
                       'gui_Callback',   []);
    if nargin && ischar(varargin{1})
       gui_State.gui_Callback = str2func(varargin{1});
    end
     
    if nargout
        [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
    else
        gui_mainfcn(gui_State, varargin{:});
    end
    % End initialization code - DO NOT EDIT
     
    % --- Executes just before Interface is made visible.
    function Interface_OpeningFcn(hObject, eventdata, handles, varargin)
     
    set_ma_position(handleFig);%où handleFig est le handle de ta figure
     
    % This function has no output args, see OutputFcn.
    % hObject    handle to figure
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    % varargin   unrecognized PropertyName/PropertyValue pairs from the
    %            command line (see VARARGIN)
    -----------------------
    Cordialement
    Developpeur82

  8. #8
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Bon, il faudrait étudier un peu la programmation en Matlab, voir les bases...

    Le fonction set_ma_position est "externe" ie enregistrée dans un fichier set_ma_position.m différent de tes 3 fichiers .m générés par GUIDE pour tes figures.
    Donc si j'ai une figure enregistrée sous le nom toto.m (avec le toto.fig associé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    function varargout = toto(varargin)
    % Begin initialization code - DO NOT EDIT
    gui_Singleton = 1;
    gui_State = struct('gui_Name',       mfilename, ...
                       'gui_Singleton',  gui_Singleton, ...
                       'gui_OpeningFcn', @toto_OpeningFcn, ...
                       'gui_OutputFcn',  @toto_OutputFcn, ...
                       'gui_LayoutFcn',  [] , ...
                       'gui_Callback',   []);
    if nargin && ischar(varargin{1})
        gui_State.gui_Callback = str2func(varargin{1});
    end
    
    if nargout
        [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
    else
        gui_mainfcn(gui_State, varargin{:});
    end
    % End initialization code - DO NOT EDIT
    
    
    % --- Executes just before toto is made visible.
    function toto_OpeningFcn(hObject, eventdata, handles, varargin)
    % This function has no output args, see OutputFcn.
    % hObject    handle to figure
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    % varargin   command line arguments to toto (see VARARGIN)
    
    % Choose default command line output for toto
    handles.output = hObject;
    
    set_ma_position(hObject);
    
    % Update handles structure
    guidata(hObject, handles);
    J'avais bien précisé dans le commentaire que handleFig était le handle de ta fenêtre, un code ça s'adapte...
    Dans ton code cette variable n'existant pas il fallait trouver par quoi la remplacer.

    Attention aussi à la propriété 'Units', j'ai bien précisé dans mon premier post que le pré-requis était que la figure et le screen soit en unités pixels tous les 2. Apparemment GUIDE ne met pas la figure en pixels par défaut => à vérifier donc.
    Règles du Forum

    Adepte de la maïeutique

Discussions similaires

  1. [IHM] Réaliser une interface graphique sur mac
    Par fjgaston dans le forum Développement OS X
    Réponses: 7
    Dernier message: 25/06/2007, 14h54
  2. Problème d'apparence d'une interface graphique sur différentes machines
    Par developpeur82 dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 12/06/2007, 10h37
  3. [C / Ada] Faire une interface graphique
    Par Casp dans le forum Ada
    Réponses: 6
    Dernier message: 15/04/2005, 15h06
  4. [RECHERCHE] un module pour developer une interface graphique
    Par romtrash dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 10/03/2005, 15h46
  5. comment fonctionne une interface graphique???
    Par elekis dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 27/10/2004, 23h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo