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 FMX Delphi Discussion :

problème avec un TImageList et un TBitmap


Sujet :

Composants FMX Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    programmeur
    Inscrit en
    Août 2023
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : programmeur
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2023
    Messages : 33
    Par défaut problème avec un TImageList et un TBitmap
    Bonjour à tous,

    J'ai un problème avec un TimageList et un TBitmap. J'aimerais affecter mon TBitMap avec un élément de ma TImageList.

    voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Sizef.cx := 128;
        Sizef.cy := 128;
        Operations[i].Image.Bitmap := imgListe.Source.ImageList.Bitmap (Sizef,i);
    j'espérais que ça marcherait avec les infos que j'ai trouvées et l'aide de Delphi mais j'ai un problème de type.

    Dans ma liste, j'ai affecté les champs Source avec mes images.

    Si vous avec une idée sur la marche à suivre.

    Merci pour votre aide.

    Dans ma liste, j'ai affecté les champs Source avec mes images.

  2. #2
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 522
    Par défaut
    Bonjour,

    je n'ai pas tout compris, mais pour affecter une image d'un TImageList à Image1 il faut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var
      bmp: TBitmap;
    begin
      bmp := TBitmap.Create;
      try
        ImageList1.GetBitmap(i, bmp);
        Image1.Picture.Bitmap.Assign(bmp);
      finally
        bmp.Free;
      end;
    A+
    Charly

  3. #3
    Membre actif
    Homme Profil pro
    programmeur
    Inscrit en
    Août 2023
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : programmeur
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2023
    Messages : 33
    Par défaut ça ne marche pas :(
    il ne prend comprend pas la méthode GetBitmap.

    Dans le TimageList il y a 2 catégories : Destination et Source. Mes Images sont stockées dans Source avec un index et Item + index.

  4. #4
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 704
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 704
    Par défaut
    Je viens de tester la solution de Charly910, et avec XE7, elle fonctionne bien (en donnant une valeur à i, bien sûr).
    Quelle est la version de Delphi utilisée ?
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

  5. #5
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 096
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sizef.cx := 128;
    Sizef.cy := 128;
    Operations[i].Image.Bitmap := imgListe.Source.ImageList.Bitmap (Sizef,i);
    Si l'on prend en compte le premier code fourni, on constate un code très approximatif

    imgListe quelle est la classe ?
    Ce n'est pas Vcl.Controls.TImageList mais probablement FMX.ImgList.TImageList qui est la seule fournissant une propriété Source

    Source est donc une TSourceCollection
    Et acccéder à ImageList revient à imgListe donc tout cela est fort mal maitrisé.

    la fonction Bitmap(Size, Index) existe bien dans FMX.ImgList.TImageList et la documentation n'a pas été lue:

    Because the TCustomImageList component can automatically destroys the TBitmap objects, that are returned by Bitmap, in the internal cache; therefore, you must not:

    • Store references to returned TBitmap objects.
    • Destroy returned TBitmap objects explicitly.
    Comme on ignore ce qu'est Operations[i].Image.Bitmap, avez-vous créé un accesseur qui fait une copie explicite en interne ?
    On ne peut que supposer un problème mais on ignore lequel, on n'a aucun détail sur la suite, quel est le dsyfonctionnement

    Un code théorique basé sur la documentation, je ne pratique pas FMX et ne connaissant pas Operations[i].Image.Bitmap cela peut peut être faux.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sizef.cx := 128;
    Sizef.cy := 128;
    Operations[i].Image.Bitmap := TBitmap.Create(Sizef.cx, Sizef.cy); 
    Operations[i].Image.Bitmap.CopyFromBitmap(imgListe.Bitmap(Sizef, i));
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 658
    Billets dans le blog
    65
    Par défaut
    Bien vu, la demande est vraisemblablement pour un programme FMX, si confirmation, je déplacerai dans le forum idoine

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //copier une image de la liste vers un timage 
    Image4.Bitmap.Assign(ImageList1.Bitmap(TSizeF.Create(128,128),1))
    reste à savoir ce qu'est ce tableau operations[]

Discussions similaires

  1. [RAD2007] Problème avec TActionList, TImageList et TBitBtn
    Par Peck777 dans le forum Delphi .NET
    Réponses: 0
    Dernier message: 13/02/2008, 16h19
  2. Problème avec une TImageList contenant des grandes images
    Par Manopower dans le forum Composants VCL
    Réponses: 8
    Dernier message: 17/11/2005, 15h20
  3. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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