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

VB 6 et antérieur Discussion :

Comment faire une progression du chargement d'une image ?


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 79
    Points : 38
    Points
    38
    Par défaut Comment faire une progression du chargement d'une image ?
    C'est encore moi mes chers programmeurs ,

    Dans une application que je fait, je dois charger des images dans des composants picturebox et au même temps stocker les valeurs des pixels dans une matrice pour faire des traitements par la suite. Ce qui fait que le temps de chargement de l'image peut être divisé en deux :

    - le temps nécessaire pour le vrai chargement de l'image dans picturebox puis
    - le temps de stockage des valeurs des pixels dans la matrice.

    Et comme je charge des images assez grandes (plus de 2000 x 1600 pixels), ce chargement est assez lent.

    Donc j'ai pensé à insérer un élément progressbar dans mon application pour montrer enfait la progression du chargement sans ralentir d'avantage le chargement mais je sais pas comment dois-je procéder pour le faire.

    Au début j'affectais en permanence la nouvelle valeur à la progressbar dans les boucles de stockage des données de l'image dans la matrice, mais j'ai trouvé que le temps de chargement a été multiplié par 20 à peu près.

    Ensuite, et pour éviter ce problème, j'ai pensé à faire uniquement le calcul de la valeur du poucentage du progressbar à l'intérieur de la boucle de stockage des données dans la matrice puis inséré un timer qui, au bout de quelques dizaines de millisecondes, va transmettre ce pourcentage à la progressbar. Ca réduit considérablement le nombre de communications avec la progressbar, sauf que pendant que le chargement fait sa boucle normalement, il semble que les timer ne marchent pas même si ils sont activés juste avant la boucle (chose que je me rends compte qu'elle est normale).

    Et je sais pas si je dois a jouter un DoEvents à cette boucle (chose que j'espère pas car ça va ralentir encore plus l'exécution) ? Ou bien y a-t-il une autre solution pour montrer la progression du chargement de limage ?(un ptit peu comme Photoshop lorsqu'il charge une image très grande)


    Et merci beaucoup messieurs-dames pour votre aide

  2. #2
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    et si tu limitais les doevents, genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      If Pcent<>PrgBar.Value then
         PrgBar.Value=Pcent
         DoEvents
      End if
    ca ne ferait qu'un centaine de DoEvents, pas la mer à boire

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/06/2006, 14h49
  2. Réponses: 3
    Dernier message: 19/05/2006, 15h54
  3. [VB6]Comment faire pour que le caption d'une ARProgressBar..
    Par MegaBigBoss dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 02/04/2006, 20h42
  4. Comment faire passer un menu par dessus une autre frame
    Par barthelv dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/11/2005, 11h03
  5. [Débutant]Comment faire des tranches de nombre dans une tabl
    Par Jedecouvreaccess dans le forum Access
    Réponses: 7
    Dernier message: 05/09/2005, 08h46

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