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 et Png


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Par défaut ImageList et Png
    Comment charger des images png dans une imagelist?
    J'ai essayé le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ILButtons.Clear;
    Button:=TImage.Create(self);
    Button.Picture.LoadFromFile(SkinPath+'b_fn0_n.png');
    ILButtons.Add(Button.Picture.Bitmap,nil);
    Button.free;
    mais j'ai une erreur dans le loadfromfile : extension du fichier image inconnue .png
    Merci d'avance pour votre aide.

  2. #2
    Membre Expert
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    Par défaut


    Tu peux t'inspirer de cet exemple, mais sans oublier d'ajouter vers la fin, la libération de l'objet !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm1.btn1Click(Sender: TObject);
    var
      vPng: TPNGObject;
    begin
      vPng := TPNGObject.Create;
      vPng.LoadFromFile('X:\www\Tests\test.png');
     
      img1.Picture.Graphic := vPng;
    end;
    @+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Par défaut
    J'ai essayé le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
      ILButtons.Clear;
      ButtonPng:=TPNGObject.Create;
      ButtonPng.LoadFromFile(SkinPath+'b_number_n.png');
      Button:=TImage.Create(self);
      IlButtons.ColorDepth:=cd32Bit;
      IlButtons.BlendColor:=clNone;
      IlButtons.BkColor:=clnone;
      Button.Picture.Graphic:=ButtonPng;
      ILButtons.Add(Button.Picture.Bitmap,nil);
      Button.free;
      ButtonPng.Free;
    mais j'ai l'erreur suivante :
    Taille d'image incorrecte

    si j'ajoute le ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    showmessage(inttostr(Button.Picture.Bitmap.Height));
    il me renvoie 0

    Si je teste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
      ILButtons.Clear;
      ButtonPng:=TPNGObject.Create;
      ButtonPng.LoadFromFile(SkinPath+'b_number_n.png');
      Button:=TImage.Create(self);
      IlButtons.ColorDepth:=cd32Bit;
      IlButtons.BlendColor:=clNone;
      IlButtons.BkColor:=clnone;
      Button.Canvas.Draw(0, 0, ButtonPng);
      ILButtons.Add(Button.Picture.Bitmap,nil);
      Button.free;
      ImagePng.free;
      ButtonPng.Free;
    les bords des boutons ne sont pas transparents et ne laissent pas voir la form qui est derrière mais blancs.

  4. #4
    Membre Expert
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Par défaut
    personnellement, j'ai toujours eviter et detester TImageList du fait de son fonctionnement peu clair et pratique, et son manque de souplesse.


    si tu as disons images PNG, crée un fichier RC comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    PNG0  RCDATA ".\res\png0.png"
    PNG1  RCDATA ".\res\png1.png"
    ...
    PNG9 RCDATA ".\res\png9.png";

    ensuite tu ajoute ce fichier au projet.

    il ne reste plus qu'a inclure la PNGLib ou PNGImage dans les uses,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    uses ..., PNGLib;
    ou
    uses ..., PNGImage;

    declare un tableau de TPNGObject (compatible PNGLib/PNGImage)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var
      PNGS : array[0..9] of TPNGObject;
    puis on recupere les PNGs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure GetPNGS;
    var N : integer;
    begin
      for N := 0 to high(PNGS) do
      begin
        PNGS[N] := TPNGObject.Create;
        PNGS[N].LoadFromResource(0, 'PNG'+IntToStr(N), RT_RCDATA); // a verifier
      end;
    end;

    et bien sur une procedure pour liberer le tableau a la fin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure FreePNGS;
    var N : integer;
    begin
      for N := high(PNGS) downto 0 do
        PNGS[N].Free;
    end;


    exemple d'utilisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MonBitmap.Canvas.Draw(0,0, PNGS[0]);
    MonBitmap.Canvas.Draw(10, 20, PNGS[1]);
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  5. #5
    Membre confirmé Avatar de magicstar
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2007
    Messages : 136
    Par défaut
    Bonsoir!
    Je ne suis qu'une débutante donc pas de code pour les images png j'utilise sAlphaImageListe un composant de alphalite version free
    Edit: voici le lien si jamais ça vous interesse alphaskins/

  6. #6
    Membre Expert
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Par défaut
    Si tu ne comprend pas quelque chose n'hesite pas à demander, c'est la moindre des choses qu'on explique le code donné en exemple.

    regle n°4 du FMOC) C'est en apprenant qu'on sort du statu de débutant.
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

Discussions similaires

  1. Uiliser les PNG dans une ImageList
    Par turbo_sophie dans le forum Visual Studio
    Réponses: 0
    Dernier message: 15/10/2010, 15h45
  2. Image format png
    Par JlouisI dans le forum Delphi
    Réponses: 8
    Dernier message: 28/06/2006, 19h12
  3. Afficher tout type d'image (gif ,png, jpg...)
    Par jfb53 dans le forum C++Builder
    Réponses: 22
    Dernier message: 20/07/2005, 14h52
  4. PNG
    Par GLDavid dans le forum OpenGL
    Réponses: 5
    Dernier message: 17/01/2003, 14h06
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

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