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

Langage Delphi Discussion :

Effet Glow sur un Objet Graphique


Sujet :

Langage Delphi

  1. #1
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut Effet Glow sur un Objet Graphique
    Salut tout le monde, j´ai un gros souci, j´aimerais avoir un effet glow(contour d´un objet avec une couleur degradée changeable quittant du contour de l´objet vers l´exterieur),
    est ce que quelqu´un a une idée ou a deja fait un truc pareil.
    un example de l´effet recherché est en piece jointe.
    je vous remercie d´avance.


    jeffray03
    Images attachées Images attachées  

  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 : 55
    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 466
    Points
    28 466
    Par défaut
    Citation Envoyé par jeffray03 Voir le message
    Salut tout le monde, j´ai un gros souci, j´aimerais avoir un effet glow(contour d´un objet avec une couleur degradée changeable quittant du contour de l´objet vers l´exterieur),
    est ce que quelqu´un a une idée ou a deja fait un truc pareil.
    un example de l´effet recherché est en piece jointe.
    je vous remercie d´avance.


    jeffray03
    quelque chose comme ça ?

    place un TEdit sur une fiche et dans le OnPaint de la fiche tu fais ça

    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
    45
    46
    47
     
    function blend(c1,c2:integer; factor:single):integer;
    var
     r1,g1,b1:integer;
     r2,g2,b2:integer;
    begin
     c1:=ColorToRGB(c1);
     c2:=ColorToRGB(c2);
     r1:=c1 and $FF;
     g1:=(c1 shr 8) and $FF;
     b1:=(c1 shr 16) and $FF;
     r2:=c2 and $FF;
     g2:=(c2 shr 8) and $FF;
     b2:=(c2 shr 16) and $FF;
     r1:=round(r1*factor+r2*(1-factor)) and $ff;
     g1:=round(g1*factor+g2*(1-factor)) and $ff;
     b1:=round(b1*factor+b2*(1-factor)) and $ff;
     Result:=r1+256*g1+65536*b1;
    end;
     
    procedure TForm1.FormPaint(Sender: TObject);
    const
     c1=$608060;
     c2=$ffffff;
     w =40;
    var
     x1,y1:integer;
     x2,y2:integer;
     i:integer;
    begin
     x1:=Edit1.Left-1;
     x2:=x1+Edit1.Width+2;
     y1:=Edit1.Top-1;
     y2:=y1+Edit1.Height+2;
     with Canvas do begin
      for i:=0 to w-1 do begin
       Pen.Color:=blend(c2,c1,1/(w-i));
       MoveTo(x1,y1);
       LineTo(x2,y1);
       LineTo(x2,y2);
       LineTo(x1,y2);
       LineTo(x1,y1);
       dec(x1); dec(y1);
       inc(x2); inc(y2);
      end;
     end;
    end;

  3. #3
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    salut Paul,
    oui, sauf que le degradé du contour, se dessine sur le font de mon Form, cela devrait rester transparent a cet endroit, pour que la couleur soit net. quand je prend la couleur rose, cela se traduit en violet.
    je suis debutant(cela fait en tout 2 semaine).
    Merci d´avance.

  4. #4
    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 : 55
    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 466
    Points
    28 466
    Par défaut
    ben c'est juste une idée hein

    sinon la transparence est un concept variable, si ton dégradé tant vers la couleur de la fiche, tu as l'illusion d'une transparence

    et si tu prend le facteur i/w (au lieu de 1/(w-i)) l'effet est plus ce que tu attendais

  5. #5
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    grand merci Paul,
    le gedradé doit partir de la couleur originale vers la couleur blanche,
    la seule couleur a changer reste toujours la couleur de depart, car la couleur finale doit etre blanche. je ne comprend pas pourquoi lorsque je choisi la couleur rose, c´est plutot du violet qui apparait.
    Merci d´avance

  6. #6
    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 : 55
    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 466
    Points
    28 466
    Par défaut
    tu trouves que c'est quelle couleur là ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    const
     c1=$FF80FF;
     c2=clWhite;
    Nom : rose.jpg
Affichages : 72
Taille : 3,0 Ko

  7. #7
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    Salut Paul, je ne comprend pas pourquoi ton effet est celui escompter, mais chez ce n´est pas le cas.
    c´exactement cela que je cherche.
    est ce que vous pouvez m´aider a faire de cela un objet, car la couleur ne doit pas s´effacer et surtout que je pourrais l´appliquer sur d´autres objets comme une polygone, une ellipse et voir une Photo.

    Merci d´avance

  8. #8
    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 : 55
    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 466
    Points
    28 466
    Par défaut
    ben je ne sais pas ce qui cloche, sauf peut-être le "1/(w-i)" qui n'aurait pas été remplacé par "i/w" comme indiqué plus haut

    sinon personnellement pour ce genre de chose, je crée une fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function BlowControl(Control:TControl);
    begin
    ...
    end;
    pour le contenu, il suffit de reprendre le code précédent en remplaçant Edit1 par Control

    ensuite dans Form1.OnPaint
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    begin
     BlowControl(Edit1)
     BlowControl(Memo1);
     BlowControl(Image1);
    end;
    voir, pourquoi pas, parcourir les le tableau Controls[] et appliquer l'effet à chaque enfant

  9. #9
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    je vais essayer
    merci de ton aide

  10. #10
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    je viens de l´esayer et l´effet est exactement ce que je voulais.
    je dois maintenant le creer comme composant et le faire intervenir dans tout les sur tout objet voulu (ellipse, image, carre etc..).

    grand Merci Paul.

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

Discussions similaires

  1. Callback sur le focus d'un objet graphique
    Par Maickeul dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 20/07/2007, 17h00
  2. manipuler les objets graphique d'excel sur access
    Par technopole dans le forum Access
    Réponses: 4
    Dernier message: 21/07/2006, 11h37
  3. debutant: un keyListener sur un objet non graphique
    Par ataya dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 18/05/2006, 19h45
  4. Export JPG sur objet graphique - Pb OLE
    Par Invité dans le forum Access
    Réponses: 6
    Dernier message: 12/05/2006, 17h38
  5. action sur objet graphique???
    Par ricardvince dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 27/04/2006, 19h53

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