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 taille du gui sur un autre ordinateur


Sujet :

Interfaces Graphiques

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 83
    Points : 30
    Points
    30
    Par défaut problème taille du gui sur un autre ordinateur
    Bonjour,

    j'ai effectué une interface graphique sous GUIDE, et en a fait un exécutable pour pouvoir le lander depuis un ordinateur n'ayant pas Matlab.

    J'ai donc testé sur un autre ordinateur, mais le rendu graphique était vraiment pas terrible :
    -Mes objets de type axes dépassaient la taille du gui
    -etc

    Si quelqu'un avait une idée d'où pouvait éventuellement venir l'erreur et comment la corriger...

  2. #2
    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
    Quelles unités as-tu utilisées ?
    Cela vient surement d'une différence de résolution d'écran.
    Voir la :
    Comment gérer la taille d'une fenêtre sur des machines de résolutions différentes ?
    Règles du Forum

    Adepte de la maïeutique

  3. #3
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 83
    Points : 30
    Points
    30
    Par défaut
    Quelles unités? heu c'est à dire?

    j'avais pas vu cet article sur la FAQ, je vais essayer ça

    =>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    f = figure('Units','normalized','Position',[0.1 0.1 0.5 0.5]);
    Par quoi dois je remplacer figure ? par le nom de mon gui, ça ne fonctionne pas; si je laisse figure, ça me créée une figure de bonne dimension en plus de mon gui.


    Edit : en fait, j'ai réussi à trouver comment faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    %Corriger l'affichage pour des machines de résolution différentes
    %Mettre les unités de l'écran et de la figure en pixels pour être sûr qu'ils ont la même unité
    unitsEcran = get(0,'Units');
    set(0,'units','pixels');
    %Récupérer la taille de l'écran
    posScreen = get(0,'screensize');
    %Gérer la position de la fenêtre
    posFigure = [10 10 posScreen(3)/2 posScreen(4)/2];
    %Création de la figure avec unité pixels.
    set(hObject,'Units','pixels','Position',posFigure);
    %f = pos('Units','pixels','Position',posFigure);
    %on remet les unités originelles de l'écran
    set(0,'units',unitsEcran);
    Par contre, je n'ai pas possibilité d'agrandir la fenêtre, on ne peut donc voir qu'une partie de mon gui...

  4. #4
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Citation Envoyé par El_bennito Voir le message
    Par contre, je n'ai pas possibilité d'agrandir la fenêtre, on ne peut donc voir qu'une partie de mon gui...
    Pour ca il faut utiliser la propriété Resize de ta fenêtre (la régler à 'on' pour autoriser le redimensionnement).
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  5. #5
    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
    Tu peux surtout changer la taille.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    posFigure = [10 10 posScreen(3)/2 posScreen(4)/2];
    n'est qu'un exemple où la figure va faire la moitié de la taille de l'écran mais tu peux choisir une taille différente.

    En fait il y a 2 choses importantes à prendre en compte :
    - il faut que la figure soit visible sur n'importe quel écran => ceci se gère avec les solutions données par la FAQ en créant la Position de la Figure par rapport à la taille de l'écran
    - il faut que les éléments de la figure reste "bien placés" dans la Figure => Cela nécessite que tous les objets aient la même propriété Units (on peut éventuellement laisser la Figure dans une unité et mettre tous ses "enfants" en normalized).

    Dans ton cas (Axes qui dépassait de la Figure) je dirais (bien que cela semble étrange car ce qn'est pas la situation par défaut) que Figure était en Normalized et Axes dans une unité fixe (~= de normalized)
    Règles du Forum

    Adepte de la maïeutique

  6. #6
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 83
    Points : 30
    Points
    30
    Par défaut
    Nickel, ça marche bien!

    Juste un truc, c'est que, lorsqu'on diminue la taille du gui, les éléments se trouvant à l'intérieur (axes,etc) ne rétrécissent pas également, ils restent à la même taille, ce qui empêche de voir tout le gui quand on n'a pas une certaine taille de fenêtre; j'espère que ça ne sera pas le même problème sur des ordinateur avec des écrans de petites tailles, ce qui empêcherait de voir tout le gui...

    j'ai plus qu'à tester sur un autre ordi !

  7. #7
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Une solution (qui n'est pas idéal en terme de rendu mais qui peut te permettre de travailler) est de passer tous les objets de ta figure en unités 'normalized' avant de modifier la taille de ta figure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    set(findobj(fig_hdl, '-property', 'Units'), 'Units', 'normalized');
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  8. #8
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 83
    Points : 30
    Points
    30
    Par défaut
    Parfait, exactement ce que je voulais!! (et pour le rendu, on ne voit pas la différence..)

    Plus qu'à tester si ça marche sur un autre ordi, et j'en aurais fini avec mon premier gui

    Merci beaucoup, ça m'a bien aidé tout ça

  9. #9
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 83
    Points : 30
    Points
    30
    Par défaut
    Après avoir tenté de lancer l'exécutable sur un ordinateur, toujours le même souçis, voyez vous même :



    Il me manque la partie supérieure de mon gui...

  10. #10
    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
    Peux-tu nous montrer ton code ? (enfin celui qui positionne les objets)
    et nous préciser finalement ce que tu as choisi pour les unités ?
    Règles du Forum

    Adepte de la maïeutique

  11. #11
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 83
    Points : 30
    Points
    30
    Par défaut
    Mon code qui positionne les objets? Comme j'ai fait mon interface sous Guide, j'ai pas à coder le positionnement des objets non?

    et pour les unités? heu, bah je sais pas trop, je n'ai rien codé en terme de position de mes objets..

  12. #12
    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
    Euh, dans tous les codes que l'ont t'a donnés avec Duf il y en a bien que tu as intégrés, non ?
    Pour les unités tu ouvres GUIDE et tu vas voir quelles unités ont été mises aux objets (propriété Units) à moins que tu n'aies utilisé le code de Duf.
    Règles du Forum

    Adepte de la maïeutique

  13. #13
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 83
    Points : 30
    Points
    30
    Par défaut
    ah, si, mais c'est le seul endroit ou j'ai utilisé le positionnement de la figure, je n'ai pas modifié le positionnement des objets de ma figure (axes, pop-up-menu,etc, etc).
    Le code était le suivant :

    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
    %Corriger l'affichage pour des machines de résolution différentes
    %Mettre tous les objets de la figure en type normalised pour un
    %redimensionnement de tous les objets lors d'un redimensionnement de la
    %fenêtre
    set(findobj(hObject, '-property', 'Units'), 'Units', 'normalized');
    %Mettre les unités de l'écran et de la figure en pixels pour être sûr qu'ils ont la même unité
    unitsEcran = get(0,'Units');
    set(0,'units','pixels');
    %Récupérer la taille de l'écran
    posScreen = get(0,'screensize');
    %Gérer la position de la fenêtre
    posFigure = [100 100 posScreen(3)-150 posScreen(4)-150];
    %Création de la figure avec unité pixels.
    set(hObject,'Units','pixels','Position',posFigure);
    %on remet les unités originelles de l'écran
    set(0,'units',unitsEcran);
    %Possibilité de redimensionner l'interface
    set(hObject,'Resize','on');
    Et pour les unités, pas trouvé, j'ai regardé un peu partout, pas vu qu'il était question d'unités un moment ou un autre

    Edit : En allant dans Property Inspector, les unités sont en characters

  14. #14
    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
    Oki, donc il faut essayer de comprendre le fonctionnement des unités et en particulier l'unité Normalized.
    Cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set(findobj(hObject, '-property', 'Units'), 'Units', 'normalized');
    Met l'unité normalized sur tous les objets de l'objet de handle hObject (je suppose que tu es dans l'OpeningFcn, donc hObject est le handle de la Figure) ayant la propriété Units .

    Ce qui fait que normalement quand tu vas redimensionné la Figure juste après, tous les objets vont se redimensionner en fonction.
    C'est donc bizarre que ça ne fonctionne pas sur ton autre PC

    Quand tu redimensionnes ta figure, les éléments de ta figure suivent bien le mouvement ? (ils se redimensionnent automatiquement)
    Règles du Forum

    Adepte de la maïeutique

  15. #15
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 83
    Points : 30
    Points
    30
    Par défaut
    oui, c'est bien ce que j'avais compris.

    Oui, les objets se redimensionnent correctement lors du redimenssionnement du gui, pas de problème sur cet ordi. C'est seulement sur l'autre ordinateur ou j'ai essayé que ça ne fonctionne pas.

    Une idée d'où ça pourrait venir?

  16. #16
    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
    Questions que j'aurai du poser dès le début : quelles sont les OS et versions de MATLAB de chaque ordinateur ?

    Il me semble qu'il y a eu des modifications dans la propriété Units par défaut (à mon époque, il y a bien longtemps , sur les PC tout était en pixels, et je crois que c'était différent sur les unix...)
    Donc il se peut que dès le départ ce soit tout pourri (je n'aime pas GUIDE je ne sais pas ce qui est réellement enregistré dans ce %*$ de .fig, je pense qu'il n'enregistre que les propriétés modifiées par l'utilisateur)
    Règles du Forum

    Adepte de la maïeutique

  17. #17
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 83
    Points : 30
    Points
    30
    Par défaut
    Windows XP sur les les deux ordi

    sur celui ou ça marche : Matlab R2008b (version 7.7.0.471)

    et sur l'autre ordi, il n'y a pas Matlab

  18. #18
    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
    Et bien sur j'ai oublié (sinon ce ne serait pas drôle) : les résolutions écran ?

    Sur celui où ça fonctionne, cela fonctionne aussi en compilé ?
    As-tu vu un comportement différent entre la version MATLAB et la version compilée (sur le même ordinateur je veux dire) ?
    Règles du Forum

    Adepte de la maïeutique

  19. #19
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 83
    Points : 30
    Points
    30
    Par défaut
    les résolutions, heu, sur celui là, c'est un peu compliqué, vu qu'il y a 2 écrans, ça doit être des 17 pouces à vue de nez.

    et l'autre, je ne sais pas, je peux aller voir en ce moment, mais je pense un 15 pouces.


    Sinon, non, aucune différence entre la version compilée et l'autre sur l'ordi ou ça fonctionne

  20. #20
    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
    Non ça c'est la taille de l'écran (ça existe encore 15 pouces )
    La résolution tu la trouves dans les paramètres d'affichage du PC.
    Ou sous MATLAB elle est donnée par la commande :
    Règles du Forum

    Adepte de la maïeutique

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/11/2014, 20h39
  2. [IIS] Partage situé sur un autre ordinateur
    Par broldorak dans le forum IIS
    Réponses: 2
    Dernier message: 02/04/2007, 16h32
  3. duplication dynamique d'un DB sur un autre ordinateur
    Par eponette dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/11/2006, 12h09
  4. Réponses: 9
    Dernier message: 14/09/2006, 17h04
  5. Récuperer les fichiers sur un autre Ordinateur
    Par guandal dans le forum Administration
    Réponses: 5
    Dernier message: 16/06/2006, 11h13

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