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

 C++ Discussion :

Reproduire le déplacement d'une scrollbar


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 37
    Par défaut Reproduire le déplacement d'une scrollbar
    Bonsoir,

    j'ai besoin de votre aide car je n'arrive pas à faire quelque chose de fonctionnel..

    Je crée une GUI en SFML et je bute à reproduire le déplacement d'une scrollbar.

    C'est plus un soucis de mathématique que de C++ mais je ne savait pas où poster.

    J'ai fait ça mais biensûr ça ne bouge pas car l’écart est toujours le même.

    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
    39
        void ScrollBar::Update()
        {
            if(slider->IsClicked())
                draged = true;
     
            if(slider->IsClickedReleased())
                draged = false;
     
            if(draged)
            {
                unsigned int y = EngineManager::GetInstance()->Event->MousePosition().pos.y;
                int difference = y - slider->GetPositions().y;
     
                cout << y << endl;
                cout << slider->GetPositions().y << endl;
                cout << difference << endl;
                cout << y - difference << endl;
     
                //slider->SetPositionY(y - difference);
     
                if(y > (position.y + padding.top))
                {
                    if(slider->GetPositions().y < position.y + padding.top)
                        slider->SetPositionY(position.y + padding.top);
                }
                else
                    slider->SetPositionY(position.y + padding.top);
     
     
                if(y < (position.y + dimensions.height - padding.bottom))
                {
                    if(slider->GetPositions().y  + slider->GetDimensions().height > position.y + dimensions.height - padding.bottom)
                        slider->SetPositionY(position.y + dimensions.height - slider->GetDimensions().height - padding.bottom);
                }
                else
                    slider->SetPositionY(position.y + dimensions.height - slider->GetDimensions().height - padding.bottom);
            }
        }
    }
    Merci d'avance.

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 37
    Par défaut
    Résolu.

  3. #3
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Pour la postérité, pourrais-tu nous dire comment?

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 37
    Par défaut
    En calculant l’écart :

    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
        void ScrollBar::Update()
        {
            unsigned int y = EngineManager::GetInstance()->Event->MousePosition().pos.y;
     
     
            if(slider->IsClicked())
            {
                difference = y - slider->GetPositions().y;
                draged = true;
            }
     
            if(slider->IsClickedReleased())
                draged = false;
     
            if(draged)
            {
                slider->SetPositionY(y - difference);
     
                if(y > (position.y + padding.top))
                {
                    if(slider->GetPositions().y < position.y + padding.top)
                        slider->SetPositionY(position.y + padding.top);
                }
                else
                    slider->SetPositionY(position.y + padding.top);
     
                if(y < (position.y + dimensions.height - padding.bottom))
                {
                    if(slider->GetPositions().y  + slider->GetDimensions().height > position.y + dimensions.height - padding.bottom)
                        slider->SetPositionY(position.y + dimensions.height - slider->GetDimensions().height - padding.bottom);
                }
                else
                    slider->SetPositionY(position.y + dimensions.height - slider->GetDimensions().height - padding.bottom);
            }
        }

  5. #5
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Merci, de la part de ceux qui feront des recherches sur le forum.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Déplacement d'une fenêtre et contraintes
    Par Mailgifson dans le forum C++Builder
    Réponses: 12
    Dernier message: 06/07/2005, 03h09
  2. [JTree] Ajouter une scrollbar
    Par Farias dans le forum Composants
    Réponses: 2
    Dernier message: 29/10/2004, 00h21
  3. [TForm] Problème lors du déplacement d'une fenêtre sans barre de titre
    Par Benjamin GAGNEUX dans le forum Composants VCL
    Réponses: 3
    Dernier message: 14/10/2004, 17h10
  4. Déplacement d'une fenêtre[débutante]
    Par monia dans le forum MFC
    Réponses: 4
    Dernier message: 27/05/2004, 12h38
  5. [JScrollPane]Comment savoir quand une scrollbar apparait ?
    Par FrigoAcide dans le forum Composants
    Réponses: 4
    Dernier message: 29/04/2004, 10h10

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