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 :

[TImage] Effectuer une transition


Sujet :

Delphi

  1. #1
    Membre éprouvé
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Par défaut [TImage] Effectuer une transition
    Bonjour,

    Pour bien marquer le passage d'une image à l'autre j'aimerais faire une transition avec par exemple un passage au noir (ou à la couleur du fond) pour ensuite venir sur la nouvelle image.

    Le composant Image à une taille définie mais pas les jpeg que je met dedans grâce à un 'LoadFromFile'.

    Une idée toute simple ? Ca pourrais être un fade de l'image en cours avant le chargement d'une autre, un remplacement bloc par bloc etc... Le plus important c'est de marquer la fin de l'image en cours plus que le chargement de la nouvelle image.

    Merci

  2. #2
    Membre éclairé
    Avatar de korntex5
    Homme Profil pro
    Directeur technique
    Inscrit en
    Juin 2004
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 417
    Billets dans le blog
    1
    Par défaut
    un blend de ton image vers une couleur suivit d'un autre blend de la couleur vers ton autre image, te conviendrait?

  3. #3
    Membre éprouvé
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Par défaut
    Tout à fait !

    Edit : meme un blend vers une couleur puis je recharge normalement l'image d'après irait. Par contre pour faire un blend proprement avec une TImage je ne sais pas trop (pas de multicouche ni de transparance).

    edit : et pour pas faire simple les images affichés sont étirés mais pas déformés. (proportional et strech à true). Donc faudrait jouer avec le TBitmap je pense.

  4. #4
    Membre éclairé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Février 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2006
    Messages : 537
    Par défaut
    Bonjour,
    est ce que la fonction "AnimateWindow" que l'on peut appliquer par exemple aux splashscreen ne fonctionnerait pas dans ce cas ?

    André

  5. #5
    Membre éprouvé
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Par défaut
    Citation Envoyé par andreditdd
    Bonjour,
    est ce que la fonction "AnimateWindow" que l'on peut appliquer par exemple aux splashscreen ne fonctionnerait pas dans ce cas ?

    André
    C'est une très bonne idée, je l'ai essayé vite fait mais malheureusement toutes les animations concernent la fenêtre entière, nécessitent de la masquer et donc affichent brièvement ce qu'il y à derrière (les autres fenêtres de l'appli, bureau windows etc..) en fait il s'agit d'une fenêtre qui sera mis en vitrine pour faire un diaporama.

  6. #6
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 938
    Billets dans le blog
    6
    Par défaut
    un compo avec des transitions : http://www.torry.ru/pages.php?id=500

    efg library, sûrement aussi
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  7. #7
    Membre éprouvé
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Par défaut
    hmm, il y à des idées pas mal dans ces composants. Je pense que je vais diminuer la luminosité progressivement, ca fera un effet sympa.

    Pour l'instant je butte juste sur un truc... vraiment bête : copier le contenu de mon TImage (qui contiens un jpg) dans un bmp je sais c'est bete mais je trouve pas comment faire sans effacer le contenu du TImage... bon, je verrais ça lundi

  8. #8
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 938
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TBitmap.Assign(TImage.Picture.Bitmap) ?
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  9. #9
    Membre éprouvé
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Par défaut
    Citation Envoyé par tourlourou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TBitmap.Assign(TImage.Picture.Bitmap) ?
    J'ai essayé et ca m'efface le TImage !

  10. #10
    Membre éprouvé
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Par défaut
    Finalement je suis passé par des composants jpeg puis deux bmp au lieu de faire mes traitements directement sur le composant TImage.
    Voici le code :

    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
    40
    41
    42
    43
    44
          value := 0;
          jpg.Assign(Image1.Picture);
          for k := 1 to 8 do begin
            //reduire luminosité
            value := value - (k * 5);
     
            bmp := TBitmap.Create;
            bmp.PixelFormat := pf24bit;
            bmp2 := TBitmap.Create;
            bmp2.PixelFormat := pf24bit;
            bmp.Width:=Image1.Picture.Width;
            bmp.Height:=Image1.Picture.Height;
            bmp2.Width:=Image1.Picture.Width;
            bmp2.Height:=Image1.Picture.Height;
            bmp.Canvas.Draw(0,0,jpg);
            bmp.PixelFormat := pf24bit;
            bmp2.Canvas.Draw(0,0,jpg);
            bmp2.PixelFormat := pf24bit;
     
            for i := 0 to bmp.Height -1 do begin
              OrigRow := bmp.ScanLine[i];
              DestRow := bmp2.ScanLine[i];
     
              for j := 0 to bmp.Width - 1 do begin
                    // modifie luminosité
                  if value > 0 then
                  begin
                    DestRow[j].rgbtRed := Min(255, OrigRow[j].rgbtRed + value);
                    DestRow[j].rgbtGreen := Min(255, OrigRow[j].rgbtGreen + value);
                    DestRow[j].rgbtBlue := Min(255, OrigRow[j].rgbtBlue + value);
                  end else begin
                    DestRow[j].rgbtRed := Max(0, OrigRow[j].rgbtRed + value);
                    DestRow[j].rgbtGreen := Max(0, OrigRow[j].rgbtGreen + value);
                    DestRow[j].rgbtBlue := Max(0, OrigRow[j].rgbtBlue + value);
                  end;
              end;
            end;
            Image1.Picture.Bitmap := bmp2;
            Image1.Repaint;
            bmp.Free;
            bmp2.Free;
            Application.ProcessMessages;
            sleep(50);
          end;
    Bien, cela fonctionne mais lors du ProcessMessages l'image disparait (laissant voir le fond) et se redessine de haut en bas très rapidement d'ou un effet de clignotement (balayage) désagréable.

    Quelqu'un à une idée pour éviter cet effet ?

    Merci

  11. #11
    Membre Expert

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2002
    Messages : 1 296
    Par défaut
    Quand on charge un JPEG, le bitmap de Picture est vide, par contre avec un BMP pas de souci. Du coup le Assign ne fonctionne pas pour un jpeg.

  12. #12
    Membre éprouvé
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Par défaut
    Citation Envoyé par Linkin
    Quand on charge un JPEG, le bitmap de Picture est vide, par contre avec un BMP pas de souci. Du coup le Assign ne fonctionne pas pour un jpeg.
    pas pensé que dans un TImage bmp et jpg étaient séparés, ca explique bien des choses.

    Pas d'idées pour le rafraichissement (repaint) pour eviter le balayage ?

  13. #13
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 938
    Billets dans le blog
    6
    Par défaut
    BeginUpdate ?
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  14. #14
    Membre éprouvé
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Par défaut
    Citation Envoyé par tourlourou
    BeginUpdate ?
    Begin Update ca n'existe pas avec les TImage !

    Mais j'ai trouvé, c'est mon ProcessMessage qui pose le problème, faut faire un repaint sans ProcessMessage et c'est bon !

    Merci

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/03/2005, 12h33
  2. Réponses: 6
    Dernier message: 24/03/2005, 14h29
  3. effectuer une requete insert avec 'values' ET 'select'
    Par delaio dans le forum Bases de données
    Réponses: 4
    Dernier message: 15/08/2004, 19h05
  4. Effectuer une sauvegarde
    Par Ultra-FX dans le forum Administration système
    Réponses: 8
    Dernier message: 19/06/2004, 14h04
  5. [Builder] Effectuer une opération quand une resource a changé
    Par Satch dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 08/04/2004, 13h22

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