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 :

[ImageList] problème de transparence


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut [ImageList] problème de transparence
    J'ai un imagelist que je rempli dynamiquement pour après renseigner les imageindex des boutons (créer aussi dynamiquement) d'un TcategoryButtons (Composants de D2005).
    Le problème c'est que la transparence va trop loin, en clair je vois a travers mon application, problème que je n'ai pas quand les images sont déjà intégrées à l'imagelist.

    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
    48
    49
    50
    51
     
    var
      Categ : TButtonCategory;
      Button : TButtonItem;
    begin 
      // création des boutons
      j := 0;
      for i := low(plugin) to high(plugin) do
      begin
        bfound := False;
        while (j <= CategoryButtons1.Categories.Count -1) and not bFound do
        begin
          if CategoryButtons1.Categories.Items[j].Caption = Plugin[i].Menu.Categorie.Caption then
            bFound := True
          else
            inc(j);
        end;
     
        if bFound then
          Categ := CategoryButtons1.Categories.Items[j]
        else begin
          Categ := TButtonCategory.Create(CategoryButtons1.Categories);
          CategoryButtons1.Categories.AddItem(Categ,j);
        end;
     
        With Categ do
        begin
          Color := PlugIn[i].Menu.Categorie.Color;
          GradientColor := PlugIn[i].Menu.Categorie.GradientColor;
          TextColor := PlugIn[i].Menu.Categorie.TextColor;
          Caption := PlugIn[i].Menu.Categorie.Caption;
        end;
     
        if Plugin[i].Menu.Bitmap <> nil then
          With imagelist1 do
          begin
            Masked := false;
            TransparentColor := True;
            TransparentColorValue := clFuchsia;
            BkColor := Categ.Color;
            Plugin[i].Menu.Bitmap.TransparentColor := clFuchsia;
            Plugin[i].Menu.Bitmap.Transparent := True;
            Add(Plugin[i].Menu.Bitmap,nil);
            Plugin[i].Menu.ImageIndex := Count -1;
          end;
     
        Button := TButtonItem.Create(Categ.Items);
        Button.Caption := Plugin[i].Menu.Button.caption;
        Button.Hint := IntToStr(i);
        Button.ImageIndex := Plugin[i].Menu.ImageIndex;
        Categ.Items.AddItem(Button,0);
    voici ce que ca donne :

    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  2. #2
    Membre chevronné
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Par défaut
    la propriété Transparent sur ta Form doit être à true et d'une même valeur qu'une couleur présente sur tes images. est-ce voulu ?

  3. #3
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Je viens de vérifier, Transpasrentcolor est à false dans ma form principale.

    C'est assez bizard quand même :

    - Je n'ai pas le problème si les images sont intégrées avant la compilation et l'execution du programme
    - si je fait une copie d'écran simple j'ai le bug (impr écran), si je fait une copie fenetre (Alt + impr ecran), j'ai la couleur de fond des images qui est présente (Fuchsia).
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    *Bump* Petit coups de pieds pour faire remonter le post.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Membre Expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Par défaut
    Bon, je n'ai que Delphi 7,

    aurais tu un autre exemple, avec des compos "standards" avec lequel ça arrive ?

  6. #6
    rbh
    rbh est déconnecté
    Membre chevronné Avatar de rbh
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    384
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 384
    Par défaut
    Salut.
    A la conception pour éviter ce genre de problème, il faut jouer sur la TransparentColor quand tu ajoute l'image dans l'éditeur.
    Par contre à l'exécution il semble que se soit le param Masked du Imagelist.add(..);

    Pour éviter toute transparence, et ignorer ce paramêtre, il faut passer la propriété Masked de l'imamelist à False.

    Citation Envoyé par "L'aide delphi'
    Description

    Affectez la valeur true à la propriété Masked afin d'indiquer que les images doivent être combinées à des masques. Les parties masquées du bitmap sont alors dessinées en transparence ou remplacées par la couleur spécifiée par la propriété BkColor.

  7. #7
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    C'est bon j'ai trouvé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if Plugin[i].Menu.Bitmap <> nil then
          With imagelist1 do
          begin
            Masked := True;
            AddMasked(Plugin[i].Menu.Bitmap,clFuchsia);
            Plugin[i].Menu.ImageIndex := Count -1;
          end;
    Il faut utiliser AddMasked et ca passe comme une lettre à la poste

    PS: L'aide de D2005 est une catastrophe ....
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  8. #8
    Membre Expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Par défaut


    Moi aussi, j'ai "séché" dessus, j'étais parti dans l'utilisation de Bitblt (API Windows).

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

Discussions similaires

  1. [FLASH] [Flax] Problème de transparence background
    Par Ekimasu dans le forum Flash
    Réponses: 5
    Dernier message: 21/02/2006, 11h34
  2. Réponses: 13
    Dernier message: 01/12/2005, 05h34
  3. Réponses: 5
    Dernier message: 18/03/2005, 20h10
  4. [DX9] [Debutant] Problème de transparence :(
    Par SekYo dans le forum DirectX
    Réponses: 5
    Dernier message: 10/09/2004, 14h19
  5. Réponses: 8
    Dernier message: 06/07/2004, 18h30

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