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

Delphi Discussion :

Comment je fais cette animation


Sujet :

Delphi

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 182
    Points : 84
    Points
    84
    Par défaut Comment je fais cette animation
    salut
    Comment je fais cette animation de l'image: Nom : 2019-09-15_08-21-32.png
Affichages : 188
Taille : 8,4 Ko?

    Nom : 2019-09-15_08-17-59.gif
Affichages : 187
Taille : 147,6 Ko
    Delphi installés : RAD Studio 10.4.1 ..........Programme VCL
    SGBD : Firebird 2.5
    générateurs Etats : FastReport, QuickReport
    OS : Window 10 64bit

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    le plus simple est de dessiner l'image dans un Bitmap en AlphaBlend pour avoir l'image grisée, puis de remplir autant de pixels que le % de progression avec leur couleur d'origine

    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
     
    procedure TForm1.PaintBox1Paint(Sender: TObject);
    var
      size: Integer;
      count: Integer;
      x, y: Integer;
    begin
      with Target.Canvas do
      begin
        Brush.Color := clWhite;
        FillRect(TRect.Create(0, 0, Target.Width, Target.Height));
        Draw(0, 0, Source, 64);
      end;
     
      size := Target.Width * Target.Height;
      count := Size - (ProgressBar1.Position  * size) div ProgressBar1.Max;
     
      while count < size do
      begin
        y := count div Target.Width;
        x := count - Target.Width * y;
        Target.Canvas.Pixels[x, y] := Source.Canvas.Pixels[x, y];
        Inc(Count);
      end;
     
      PaintBox1.Canvas.Draw(0, 0, Target);
     
    end;
    c'est un code vite fait, il serait plus performant de copier la ligne partielle d'une part, et le bas de l'image d'autre part par des CopyRect()

    Nom : test.png
Affichages : 159
Taille : 5,5 Ko

    dans cet exemple il suffit de cliquer sur la progressbar pour changer l'image
    test.zip
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 07/08/2006, 09h59
  2. comment mettre une image animée
    Par thecancre dans le forum Graphisme
    Réponses: 9
    Dernier message: 24/05/2006, 12h59
  3. comment afficher une image animée dans un formulaire
    Par dadamovic dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 13/05/2006, 18h59
  4. [Cookies] Comment je fais ?
    Par batama dans le forum Langage
    Réponses: 1
    Dernier message: 06/05/2006, 10h06
  5. Comment je fais pour redemarer le demon ssh?
    Par denza1 dans le forum Réseau
    Réponses: 11
    Dernier message: 29/12/2005, 09h00

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