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 :

Manipuler des PNG en XE5


Sujet :

Langage Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 72
    Points : 74
    Points
    74
    Par défaut Manipuler des PNG en XE5
    Bonjour,

    L'autre jour je voulais montrer à mon fils les rudiments de la programmation et forcément il voulait que l'on fasse un jeu ensemble. Dont acte... Et là, c'est le drame! Je n'ai pas trouvé comment manipuler des images PNG correctement. Il est possible de charger un PNG dans un TGraphic, mais par contre impossible d'utiliser un TCanvas comme surface d'affichage et en lui collant en des coordonnées précises des PNG (à la manière de tuiles sur une plus grande image).

    Je me souviens maintenant que cela m'avait fait râler dans d'anciennes versions de Delphi, mais là en XE5 soit je n'ai pas trouvé, soit c'est inacceptable. On va me dire d'utiliser FireMonkey bien sûr, mais je voudrais savoir où en est le support des PNG en VCL XE5... Tout conseil apprécié!

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 786
    Points : 5 918
    Points
    5 918
    Par défaut
    Bonjour,

    Avant de crier au loup, il faudrait regarder (et pas survoler) la documentation fournie avec Delphi.
    Vous auriez trouvé que le composant TImage gère entre autres les formats bmp, jpeg, et png.

    L'unité qui gère le format png (Vcl.Imaging.pngimage) est fournie avec Delphi depuis 2007 ou 2009 !

    Une petite recherche sur ce site même vous aurait permis de trouver des informations utiles à résoudre votre problème.

    TGraphic est la classe de base abstraite. Utilisez plutôt TPngImage qui en dérive ou TPicture qui sait charger une image au format png...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 72
    Points : 74
    Points
    74
    Par défaut
    Alors même si effectivement je n'y ai pas passé des heures, j'avais quand même testé quelques trucs

    J'ai bien identifié Vcl.Imaging.pngimage et la classe TPNGImage. J'ai bien vu et testé que le TImage peut contenir du PNG. Maintenant les choses se compliquent quand on veut accéder au Canvas de la dite TImage (il me faut un composant visuel en tant que surface de jeu).

    Si vous faites par exemple imgMap.Canvas.Draw( 100, 100, PNGImage );

    où imgMAP est votre TImage sur votre form est PNGImage un PNG de test de type TPNGImage, vous recevez un beau 'can only modify an image if it contains a bitmap'. C'est ce que j'indiquai dans mon premier message (même si j'aurai du parler de TImage et non pas de TGraphic, la classe abstraite, désolé).

    Aussi je reviens vers vous, connaissez vous un moyen de faire la manip que je souhaite? Un composant visuel, comme trame de fond, et pouvoir ajouter dessus via son canevas des PNG, aux coordonnées de mon choix?

  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 457
    Points
    28 457
    Par défaut
    il suffit de lire correctement l'erreur imgMAP ne contient pas un Bitmap que tu puisses modifier, ça n'a rien à voir avec le PNG que tu veux dessiner.

    voir ceci

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 72
    Points : 74
    Points
    74
    Par défaut
    Effectivement, affecter un bitmap (et non un png) au canevas initial du TImage permet ensuite d'y afficher des png sans soucis. Merci de votre intervention, il ne me manquait plus que cela pour montrer les rudiments de la programmation à mon fils.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/04/2015, 21h23
  2. [xml]manipuler des données xml sous Oracle9i
    Par crazy dans le forum SQL
    Réponses: 7
    Dernier message: 28/02/2004, 12h40
  3. Manipuler des dates...
    Par Ti Jen-tsie dans le forum Langage
    Réponses: 4
    Dernier message: 26/06/2003, 12h46
  4. Manipulation des handle contexte
    Par rockbiker dans le forum DirectX
    Réponses: 1
    Dernier message: 09/05/2003, 19h51
  5. Fonctions de manipulation des chaines et des dates
    Par Fares BELHAOUAS dans le forum Débuter
    Réponses: 3
    Dernier message: 09/11/2002, 23h43

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