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 :

Afficher une image lors du survol d'une autre


Sujet :

Composants VCL Delphi

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 42
    Points : 31
    Points
    31
    Par défaut Afficher une image lors du survol d'une autre
    Bonjour,

    J'ai une image de fond pour mon appli, qui contient plusieurs petites images. Lorsque je survole une petite image avec la souris, je voudrais faire apparaitre une autre image.

    Le problème est que ça fait une sorte de saut sur l'image de fond. C'est affreux, aucune fluidité, comme si l'image de fond était entièrement réaffichée.

    Exemple : ImageFond est l'image du fond... (original)
    Image1 est l'image qu'on survole
    Image2 est l'image qu'on affiche lors du survol d'image1

    Problème : Il semble qu'ImageFond est entièrement repainte lors de l'affichage d'image2. c'est moche ! Y a pas un moyen plus classe de faire ça ?

    Merci

  2. #2
    Membre du Club Avatar de woow
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Santé

    Informations forums :
    Inscription : Février 2004
    Messages : 30
    Points : 40
    Points
    40
    Par défaut
    Hello,

    Une possibilité serait de créer un élément invisible qui contient déjà l'image chargée. Lorsque tu survole ton image de fond, tu rends ton élément visible par dessus ton image de fond. L'image étant déjà chargée, ca devrait être rapide.

    Je n'ai pas essayé et je ne connais pas ta configuration, mais je pense que c'est une solution qui peut fonctionner.

    Bonne journée

  3. #3
    Membre régulier Avatar de yoghisan
    Profil pro
    Inscrit en
    Février 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 172
    Points : 113
    Points
    113
    Par défaut
    Tu peux créer un nouveau composant image qui aurait deux nouveaux événements
    - OnMouseEnter : Evenement produit quand on rentre sur l'image.
    - OnMouseLeave : Evenement produit quand on sort sur l'image.

    Avec ca, ca sera facile de faire ce que tu veux faire.

    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
    unit ImageMouse;
     
    interface
     
    uses
      SysUtils, Classes, Controls, ExtCtrls ,messages ;
     
    type
      TImageMouse = class(TImage)
      private
        FOnMouseEnter:TNotifyEvent;
        FOnMouseLeave:TNotifyEvent;
      protected
        procedure WndProc(var Message : TMessage); override;
      public
      published
        property OnMouseEnter:TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
        property OnMouseLeave:TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
      end;
     
    procedure Register;
     
    implementation
     
    procedure Register;
    begin
      RegisterComponents('Mes composants', [TImageMouse]);
    end;
     
    procedure TImageMouse.WndProc(var Message : TMessage);
    begin
      case Message.Msg of
        // La souris 'entre' sur le composant
        CM_MOUSEENTER : if assigned(FOnMouseEnter) then FOnMouseEnter(self);
        // La souris 'sort' du composant
        CM_MOUSELEAVE : if assigned(FOnMouseLeave) then FOnMouseLeave(self);
      end;
      inherited; // Continuer à faire passer le message
    end;
     
    end.
    Apres relecture, apparemment tu y arrives...

  4. #4
    Membre régulier Avatar de yoghisan
    Profil pro
    Inscrit en
    Février 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 172
    Points : 113
    Points
    113
    Par défaut
    Essaye plutot
    - Form1.DoubleBuffered := True;
    Form1 est ici le parent des images/

    Ou peut etre un
    - Application.ProcessMessages;
    pas la meilleure chose...

  5. #5
    Débutant
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 42
    Points : 31
    Points
    31
    Par défaut
    En fait, le couplage de ces trois solutions fonctionne, j'utilisais déjà ce que préconise woow, en mettant un label transparent qui me servait à déclencher les évenements OnMouseEnter et OnMouseLeave. Le problème vient de mon Appli, il y a des requetes fréquentes qui ralentissent l'affichage et qui provoquent ces sauts. Car j'ai essayé sur un nouveau projet, et c'est déjà bcp mieux...

    Merci à vous en tout cas.

    Bien cordialement,

    StarMusic

  6. #6
    Membre régulier Avatar de yoghisan
    Profil pro
    Inscrit en
    Février 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 172
    Points : 113
    Points
    113
    Par défaut
    Tag Résolu ?

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

Discussions similaires

  1. [AC-2010] changement du curseur lors du survol d'une image
    Par nrdz83 dans le forum Access
    Réponses: 2
    Dernier message: 12/10/2014, 16h01
  2. Réponses: 2
    Dernier message: 23/05/2010, 12h45
  3. Changer l'icône de la souris lors du survol d'une image
    Par Jawad-smart dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 23/06/2008, 23h48
  4. Réponses: 5
    Dernier message: 17/04/2008, 18h44
  5. [javascript] Alt n'affiche rien lors du survol d'une image
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 26/12/2005, 17h56

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