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. #21
    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
    je pensais que la taille était liée à la résolution (et 15 pouces pour les ordi portables c'est pas rare )

    donc, la résolution de cet ordi :

    ans =

    1 1 1280 1024

    et l'autres, bah j'en ai aucune idée, l'ordi est parti faire des mesures dehors, donc voilà =x


    Edit : Merci l'orage, l'ordi est revenu : sa résolution : 1024 x 768

    Re-Edit : j'ai essayé avec cette résolution sur l'ordi ou ça fonctionne, et ça fonctionne toujours, je sais pas si c'est très utile comme info...

  2. #22
    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
    Sinon une idée en passant:

    Tu pourrais définir 2 (ou plus) tailles pour ton gui que l'utilisateur pourrait choisir, ainsi ca te permettrait de contrôler vraiment le positionnement des objets dans toutes les configurations.
    Bon par contre, ca prend un peu plus de temps à mettre en oeuvre

  3. #23
    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
    ouais, pas bête...

    Un peu plus de temps, c'est à dire?
    Parce que Lundi, 9h, j'ai réunion avec mon patron pour lui montrer mon interface, et je peux pas passer le week end dessus, donc voilà

  4. #24
    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 828
    Points
    14 828
    Par défaut
    Citation Envoyé par El_bennito Voir le message
    Edit : Merci l'orage, l'ordi est revenu : sa résolution : 1024 x 768

    Re-Edit : j'ai essayé avec cette résolution sur l'ordi ou ça fonctionne, et ça fonctionne toujours, je sais pas si c'est très utile comme info...
    Si c'est utile.
    Normalement à même résolution tu devrais avoir le même comportement donc là ben je n'ai plus d'idée

  5. #25
    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
    D'accord, donc zut en gros

    je vais essayer de faire la solution de Duf42, si c'est mon dernier espoir, en espérant que ça fonctionne...

    Mais admettons qu'au lancement de l'interface, une fenêtre de sélection de résolution apparaisse, on choisit la bonne, et puis bah on remplace posScreen(3) et posScreen(4) par les bonnes valeurs.

    Je vois pas ce que ça changerait puisque le get(0,'screensize') rendrait le même résultat...


    Edit :

    J'ai essayé avec le code 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    %Différentes résolutions possibles
    str = {'1280x1024', '1024x768'};
    [res,ok] = listdlg('PromptString','Quelle est votre résolution:',...
                    'SelectionMode','multiple',...
                    'Name','Résolution',...
                    'OKString','OK...',...
                    'CancelString','Annuler',...
                    'ListSize',[300 120],...
                    'ListString',str);   
    if (ok == 1)
        if res(1) == '1280x1024'
            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');
    %Gérer la position de la fenêtre
    posFigure = [100 100 1280-150 1024-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');
        elseif res(1) == '1024x768'
            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');
    %Gérer la position de la fenêtre
    posFigure = [100 100 1024-150 768-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');
        end
    end
    et ça fait toujours pareil sur l'ordi ou ça ne marche pas...

  6. #26
    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
    Non en fait, c'est un petit peu plus long que ca, il s'agit de redéfinir la position (et donc la taille) de tous les objets de la fenêtre en fonction de la résolution.
    Au final tu n'as plus besoin de passer en unité 'normalized' puisque tu as définis les positions pour les 2 résolutions d'écran...

    En terme de charge de travail c'est pas la mort mais bon c'est pas un click...

  7. #27
    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
    D'accord...

    En gros, dans mon OpeningFcn, je dois dimensionner la taille de tous mes objets (axes, boutons, etc) en unités pixels comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    set(findobj(hObject, '-property', 'Units'), 'Units', 'pixels');
    unitsEcran = get(nom_de_lobjet,'Units');
    set(nom_de_lobjet,'units','pixels');
    posFigure = % Ici je mets les coordonnées de mes objets
    %Création de la figure avec unité pixels.
    set(nom_de_lobjet,'Units','pixels','Position',posFigure);
    %on remet les unités originelles de l'écran
    set(nom_de_lobjet,'units',unitsEcran);
    Et en fonction de la résolution, je mets 2 positions pour chaque objet, c'est bien ça?

  8. #28
    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
    Oui c'est ca l'idée, reste à voir si ca convient à ton problème...

  9. #29
    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
    heu, ouais, ça peut faire l'affaire, même si c'est pas l'idéal...

    Comment fait-on pour connaitre les coordonnées actuelles des objets? pour pouvoir ensuite les dimensionner en fonction de la résolution?
    j'ai tenté un trcu du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    get(handles.axes1,'Size')
    , et des trucs similaires, mais je n'ai pas trouvé.

  10. #30
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    get(handles.axes1,'Position')
    Ou alors en plus automatique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    obj_list = findobj(handles.figure1, '-property', 'Position');
     
    for i_obj = 1:length(obj_list)
        [get(obj_list(i_obj), 'Tag'), ' = ', get(obj_list(i_obj), 'Position')]
    end

  11. #31
    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
    J'ai effectué ceci dans le OpeningFcn :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    %Objet Axes1
    set(findobj(handles.axes1, '-property', 'Units'), 'Units', 'pixels');
    unitsEcran = get(handles.axes1,'Units');
    set(handles.axes1,'units','pixels');
    caxes1 = get(handles.axes1,'Position')
    posFigure = [caxes1(1) caxes1(2) caxes1(3) caxes1(4)];
    %Création de la figure avec unité pixels.
    set(handles.axes1,'Units','pixels','Position',posFigure);
    %on remet les unités originelles
    set(handles.axes1,'units',unitsEcran);
    et ce, pour chaque objet de mon gui. Est ce bien le principe du fonctionnement? j'ai un doute..

  12. #32
    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
    Je comprends pas bien ce que tu veux faire avec ce code là

    Dans mon esprit ca ressemble plutôt à çà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    % Réglage de l'unité des objets à pixels
    set(findobj(handles.axes1, '-property', 'Units'), 'Units', 'pixels');
     
    % En fonction du cas, définition de la taille des objets
    if (...)
    set(handles.axes1,'Position',[10 10 200 300]);
    ...
    else
    set(handles.axes1,'Position',[5 5 100 150]);
    ...
    end
    Pour la condition, je sais pas trop comment tu veux t'arranger, tu peux soit détecter automatiquement la résolution de l'écran ou alors faire une demande à l'utilisateur (mais c'est un peu lourd...)
    Ensuite tu définis la taille de tous tes objets...

  13. #33
    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
    D'accord, j'avais tout compris de travers

    Pour la résolution, j'ai mis un listdlg qui propose différentes résolutions, et l'utilisateur doit choisir celle qui convient, donc ce n'est pas trop lourd.


    Merci bien !

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

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