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 :

Adapter les composants graphique à la résolution de l'ecran


Sujet :

Interfaces Graphiques

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 40
    Points : 25
    Points
    25
    Par défaut Adapter les composants graphique à la résolution de l'ecran
    Bonjour!

    Je voudrais savoir si vous connaissez un moyen d'adapter les composants en fonction de la résolution de l'écran ?

    En effet , j'ai développé le programme en 1440*900 mais lorsque je repasse en 1024*768 la moitie des composants sont inaccessibles.
    J'ai regardé le tutoriels pour redimensionner une fenêtre à un écran ou à une résolution, ou pour la centrer, mais justement cela n'adapte QUE la fenêtre mais ce qui est à l'intérieur ne change pas. Une partie des éléments n'est plus visible et accessible.


    merci d'avance!

  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 828
    Points
    14 828
    Par défaut
    Une solution est de mettre tous tes objets en unité Normalized.
    Comment gérer la taille d'une fenêtre sur des machines de résolutions différentes ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 40
    Points : 25
    Points
    25
    Par défaut
    Merci CaroLine, j'ai déjà essayé et cela ne fonctionne pas, ou alors je l'ai fais de travers puisque ça redimensionne bien la fenêtre, mais pas ces composants.

    Je vais réessayer quand même.

  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
    Pour que ca fonctionne, il faut changer l'unité des composants avant de redimensionner la fenêtre

    Edit: Sinon tu peux jeter un oeil ici

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 40
    Points : 25
    Points
    25
    Par défaut
    j'ai utilisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    set(findobj(hObject, '-property', 'Units'), 'Units', 'normalized');
    % % hObject=figure('position',[0 100 scnsize(3) scnsize(4)-100]);
    % 
    %  set(hObject,'position',[0 0 scnsize(3) scnsize(4)-150])
    set(hObject,'Units','Normalized','Position',[0 0 1 1]);
    et ça semble marcher, même si le résultat est pas très beau. Il faut que je change d'ordinateur pour voir si ça fonctionne vraiment. Ne faites pas attention à ce qui est en commentaire c'était des tests.

    Merci à vous deux!

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 40
    Points : 25
    Points
    25
    Par défaut
    Bon en fait ça marche toujours pas..
    Qu'est ce qu'il faudrait que je rajoute à ces lignes de codes? Elles sont placés dans le openingfcn de mon interface:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function interface_OpeningFcn(hObject, eventdata, handles, varargin)
    set(findobj(hObject, '-property', 'Units'), 'Units', 'normalized');
    set(hObject,'Units','Normalized','Position',[0 0 1 1]);
    % Choose default command line output for interface
    handles.output = hObject;
     
    % Update handles structure
    guidata(hObject, handles);

  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
    Citation Envoyé par Angel30 Voir le message
    Bon en fait ça marche toujours pas..
    Pourrais-tu préciser ce qui ne marche pas?

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 40
    Points : 25
    Points
    25
    Par défaut
    Comme tout à l'heure les objets dans la fenêtre de s'adaptent pas à la résolution:

    voilà ce que j'obtiens (cf image en pièce jointe)



    Mon interface est toujours "coupée".

    Je vais réessayer avec ça, toujours dans le openingfcn de l'interface:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    %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)-50 posScreen(4)-20];
    %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);
    Mais je n'ai pas l'occasion de vérifier si ça fonctionne vraiment sur un autre ordinateur pour l'instant.
    Images attachées Images attachées  

  9. #9
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 483
    Points : 13 681
    Points
    13 681
    Billets dans le blog
    1
    Par défaut
    Pourquoi tu t'embêtes à faire des set partout, alors tu pourrais fixer tous les paramètres à la déclaration de tes entités graphiques ?

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    hMaFenetre = figure(...
        'units','normalized',...
        'position',[0.1 0.1 0.8 0.8]);


    EDIT : ne mettant ça dans l'openinf function, est ce qu'il retrace la figure avec les nouvelles propriétés de taille ?

  10. #10
    Invité
    Invité(e)
    Par défaut
    faut TOUT mettre en 'normalized', du coup tout marche en pourcentage d'un parent, si tu mets un panel en pixel au milieu il va rester avec la même resolution (200*50 par ex) quelquesoit le pc.

    En normalized, ton panel sera un pourcentage de la figure qui est elle même un pourcentage de l'écran.
    Par contre le text ne marche pas en pourcentage (enfin peut etre que c'est possible mais j'ai jamais fait), donc si la résolution d'écran est trop petit le texte va se marcher dessus.

  11. #11
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 483
    Points : 13 681
    Points
    13 681
    Billets dans le blog
    1
    Par défaut
    Tu peux mettre fontsize à la valeur normalized dans les uicontrol, je présume que tu dois pouvoir le faire ailleurs où tu trouves du texte.

Discussions similaires

  1. Réponses: 14
    Dernier message: 24/11/2023, 20h24
  2. Réponses: 1
    Dernier message: 27/04/2009, 09h46
  3. Adapter les composants graphique à la résolution de l'ecran
    Par icicmoi dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 07/08/2008, 21h30
  4. Comment adapter les objets graphiques (uicontrol) à toutes résolutions d'écran
    Par camillechambon dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 01/05/2007, 23h01
  5. effectuer des operations sur les composants graphiques
    Par Zorgz dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 19/10/2006, 14h34

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