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

Composants VCL Delphi Discussion :

Une ProgressBar pour un rafraichissement d'image


Sujet :

Composants VCL Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2003
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 26
    Points : 12
    Points
    12
    Par défaut Une ProgressBar pour un rafraichissement d'image
    Bonjour,
    Je suis entrain de développer un jeu pour lequel j'ai besoin d'afficher de temps en temps des images assez lourdes (2 à 7 Secondes de raffraichissement sur un PC de moyenne Gamme). Pendant cet affichage, je souhaiterais placer une ProgressBar (PB) pour signifier à l'utilisateur où en est le raffraichissement de l'image.
    J'utilise la méthode ".repaint".
    Je souhaite faire avancer ma PB au fur et à mesure que je descend dans l'image. En effet, je commence l'affichage depuis le HautGauche vers le Bas droit. Mais je ne sais pas s'il est possible d'accéder au déroulement de l'action Repaint (Savoir où la méthode en est pour pouvoir remplir la PB en conséquence), ni comment feinter pour arriver à mon but.
    Voila, si qqun a une idée quelconque, je l'en remercie d'avance !
    Jake
    Ceux qui veulent réussir trouvent des moyens, les autres trouvent des excuses...

  2. #2
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Tres simple .... Ajoute ca de temps en temps :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Application.ProcessMessage;
    comme ca tu "casses" la procedure d'affichage de tps en tps pour gerer les evenements avant d'y revenir ..... (donc les appels implicites aux methodes de dessins des composants ProgressBar ....)
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2003
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 26
    Points : 12
    Points
    12
    Par défaut Mais où en est-il?
    Cette methode permet en effet de désactiver l'affichage au profit d'une autre action, c'est vrai, mais je ne sais pas où en est l'affichage (en % par exemple). Or c'est sur l'avancement de l'affichage que je souhaite me baser pour faire évoluer ma ProgressBar et non sur un temps donné.
    Voila si vous avez des idées merci d'avance.
    Ceux qui veulent réussir trouvent des moyens, les autres trouvent des excuses...

  4. #4
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Malheureusement l'informatique n'est pas encore une science divinatoire ^^

    Si tu sais pas toit meme ou tu en es .. delphi ne le saura pas a ta place D

    Essaye via des precalculs de "prevoir" par exemple le nombre de lignes, de pixels, etc a modifier et au fil du temps de sont affichage calculer le pourcentage ....

    Ne pas oublier les proprietees Min/Max du ProgressBar qui permettre d'eviter le calcul du porcentage ! (Ex : 328 pixels a afficher Min =1, Max =328 et pos = n° du pixel en cours .... )
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2003
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 26
    Points : 12
    Points
    12
    Par défaut Delphi := Science divinatoire au panthéon des programmeurs;
    Et bien si, je pense que Delphi est plus au courant que moi
    Pour tout te dire, j'ai blindé une Drawgrid d'images élémentaires.
    Hors, une réactualisation de cette drawgrid est (de temps en temps nécessaire... hélas) et cette dernière action est comment dire... heu ... lourde! Donc je voulais faire patienter l'utilisateur, faire une fiche de chargement. J'avais pour idée de me calquer sur le nombre de lignes de la DrawGrid et d'incrémenter la PB d'autant (Avec effectivement les propriétés Min/Max). Hors je n'ai pas (A ma connaissance) de moyen permettant de savoir où en est la procédure de Reactualisation des ma Drawgrid... Peut-être que Delphi le sait, c'est même fort probable, mais moi je n'en ai aucune idée... Sniff...
    Comprends-tu mon émoi ? lol
    Merci, Jake
    Ceux qui veulent réussir trouvent des moyens, les autres trouvent des excuses...

  6. #6
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    oki je comprends .......
    Tu lance une prodcedure automatique de Delphi (Comme Form1.Refresh) et tu attends qu'elle finisse .. c ca ?
    Dans ce cas je vois pas trop ....

    Ou plutot si : Si tu n'as pas la "maitrise du temps" de ton refresh, tu ne peuix pas passer par un progress bar au sens standard. Utilise plutot la version "chargement de windows XP" qui trimbale un serpentin de petits carres d'un bout a l'autre de ta progressbar en aller et retour tant que ton affichage n'est pas fini. Ajoute un petit message d'attente a la windows "Le traitement peux prendre un certain moment dependant de la puissance de votre materiel. Veuillez patienter".

    si tu as pas le moyen d'inserer l'instruction Application.ProcessMessage assez frequenement pour que l'affichage ne soit pas saccadé, il te reste plus qu'a implementer ta fenetre d'attente dans un thread a part.

    Pour la gestion du "chapelet de petits carres" j'ai eu recours une fois a cette methode. J'ai cree une form avec 1 blevel et un tImage invisible qui contien la capture d'ecran d'un des ces fammeux petits carres. Apres ils reste plus qu'a afficher les carres et les faire se deplacer ..... en a l'aide d'un timer ....

    Voila de quoi palier a ton probleme.
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  7. #7
    Membre à l'essai
    Inscrit en
    Octobre 2003
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 26
    Points : 12
    Points
    12
    Par défaut Grosso modo c'est ça !
    Tu as tout a fait compris le schmilblik ! Et je suis heureux d'apprendre que je n'ai pas faux sur toute la ligne
    Mais bon, c'est vrai que la façon de faire WinXP est pas bête, je m'y colle ... dès que possible... (g des cours à réviser).
    Merci pour l'info !
    Ceux qui veulent réussir trouvent des moyens, les autres trouvent des excuses...

  8. #8
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Te guaranti rien .. mais vu que j'ai deja plus ou moins etabli ce genre de form .. je pense le traduire rapidos en tant que composant. Si j'ai fini avant toi .. je t'en fait part ;pp
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  9. #9
    Membre à l'essai
    Inscrit en
    Octobre 2003
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 26
    Points : 12
    Points
    12
    Par défaut En fait...
    c'est fait... j'ai pris sur mon temps pour faire ça en 2 secs 2... et apparement, ça marche... (en dehors du prog en tout cas), je le teste dans.... pas longtemps...
    merci
    Ceux qui veulent réussir trouvent des moyens, les autres trouvent des excuses...

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

Discussions similaires

  1. afficher une ProgressBar pour une fonction
    Par bullrot dans le forum C#
    Réponses: 6
    Dernier message: 06/06/2012, 11h15
  2. [CKEditor] Transfer d'url dans une popup pour changer chemin upload image
    Par Acoupa dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 24/01/2008, 10h06
  3. Réponses: 10
    Dernier message: 20/01/2006, 16h59
  4. [Images] représentation d'une carte pour jeu en php
    Par maniaco_jazz dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 29/11/2005, 10h41
  5. [C#] Utilisation d'une ProgressBar pour un téléchargement
    Par snoof dans le forum Windows Forms
    Réponses: 10
    Dernier message: 04/10/2004, 19h37

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