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

Algorithmes et structures de données Discussion :

Algorithme de simulation d'une barre de progression


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de kidpaddle2
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Par défaut Algorithme de simulation d'une barre de progression
    Bonjour,

    La lecture totale est nécessaire à la compréhension, ne considérez pas mon topic comme hors-sujet dès le début je vous prie

    Je pense que ce forum est approprié, même si cela porte sur la conception primaire d'une progress-bar. En effet, je dispose d'une listbox (une liste de chaines de caractères) dans laquelle j'aimerais créer une progress-bar, évoluant derrière un élément.

    Celle-ci serait à base de FillRect(), qui remplit un rectangle dans certaines coordonnées d'une certaine couleur. Comme vous le savez sûrement, une progress-bar est concrètement définie par les coordonnées de son coin supérieur gauche (left;top), et inférieur droit (right;bottom). Celles-ci sont fixes, et seuls le domaine d'évolution (range) et la position actuelle (Position) changent (voir image ci-dessous).

    Voilà donc le problème : comment pourrais-je calculer x ( (left+x;bottom) donne la coordonnée du coin inférieur droit à donner à FillRect(), basée sur le coin inférieur gauche de la progress-bar) en fonction du domaine d'évolution et de la position actuelle (et bien sûr des coordonnées de la progress-bar) ?

    Merci d'avance.

    P.S: Si ça peut simplifier les choses, vous pouvez admettre que left et top sont nuls.

    Edit: Petit exemple pour montrer le caractère virtuel du domaine d'évolution et de la position :
    "Imaginez les coordonnées d'une progress-bar de ce type (0,0,50,10). Si le domaine d'évolution est de (0->3540), et que la position actuelle est 1560, quel est l'avancement x ?"
    Images attachées Images attachées  

  2. #2
    Membre éclairé Avatar de kidpaddle2
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Par défaut
    Après une réflexion inspirée par mon schéma (ça aide ^^), j'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x := (relPosition/range)*width
    Avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    range := max-min
    width := right-left
    relPosition := position-min
    Ce qui nous fait en C++ :

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    x = static_cast<size_t>(((double)position - min) / ((double)max - min)) * (rect.right - rect.left);

    Mais cela ne semble pas marcher (rien ne s'affiche)... pourriez-vous m'aider ?

  3. #3
    Membre Expert Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Par défaut
    Citation Envoyé par kidpaddle2
    Imaginez les coordonnées d'une progress-bar de ce type (0,0,50,10). Si le domaine d'évolution est de (0->3540), et que la position actuelle est 1560, quel est l'avancement x ?
    avec ton exemple :
    en considérant qu'on avance de 1 en 1 (tu l'as pas précisé...)
    tu fais un produit en croix je pense...

    3540 <=> 50px
    1560 <=> x
    d'où x = (1560*50) / 3540
    et tu arrondi x à un pixel pret vu qu'une moitie de pixel c'est rare
    voila je pense que c'est la solution

  4. #4
    Membre éclairé Avatar de kidpaddle2
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Par défaut
    Exact, merci (c'est si bête que j'en ai honte ^^).

    Topic résolu, ça marche parfaitement.

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

Discussions similaires

  1. [FLASH 8] Créer une barre de progression d'un flv
    Par matt89 dans le forum Intégration
    Réponses: 2
    Dernier message: 20/04/2006, 17h40
  2. [VBA-A]paramétrer une barre de progression sur une requête
    Par jeronimo dans le forum VBA Access
    Réponses: 3
    Dernier message: 06/02/2006, 20h38
  3. Créer une barre de progression sous Vba ??
    Par Deejoh dans le forum Général VBA
    Réponses: 7
    Dernier message: 17/10/2005, 15h05
  4. [C#]Affichage d'une barre de progression
    Par boleduch dans le forum ASP.NET
    Réponses: 9
    Dernier message: 27/08/2005, 17h12
  5. Indy FTP (idFTP) faire une barre de progress de transfert
    Par Harry dans le forum Web & réseau
    Réponses: 4
    Dernier message: 09/07/2004, 13h15

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