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 :

Création d'un bitmap depuis un fichier bmp


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 23
    Points : 14
    Points
    14
    Par défaut Création d'un bitmap depuis un fichier bmp
    bonjour,
    je crée des images dans des variables de type bitmap à parti d'un fichier bmp. Mais l'image créé n'est pas la même que mon fichier bmp. Certaines couleurs ne sont pas mises (c'est comme si c'est transparent).
    Comment faire pour obtenir les bonnes images ?
    merci

    mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Image:= tBitmap.create;
    Image.LoadFromFile('images/image1.bmp');
    Image.width:=16;
    Image.height:=16;
    Form1.Canvas.Draw(a,b,Image);
    Image.free;

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Salut,

    Essayes donc avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Image:= tBitmap.create;
    Image.PixelFormat:=pf24bit;
    Image.LoadFromFile('images/image1.bmp');
    ... suite inchangée
    A+
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 23
    Points : 14
    Points
    14
    Par défaut
    merci de m'aider.
    ca n'a rien changer. Les images s'affichent toujours mal.
    Ah, aussi j'ai un fond qui s'actualise presque toutes les secondes et ca fait une impression de clignotement certaine fois. Y-a t-il une possibilité de réduire ce clignotement ?

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Salut,

    Pour réduire le clignotement mettre à True la propriété DoubleBuffered de la form : ajouter DoubleBuffered:=true; dans le FormCréate.

    A+

    EDIT : Quand tu dis
    ca n'a rien changer. Les images s'affichent toujours mal.
    ... elles s'affichent comment ? T'as essayé avec StretchDraw ?

    A+
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  5. #5
    Membre expérimenté Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Points : 1 448
    Points
    1 448
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Image:= tBitmap.create;
    Image.LoadFromFile('images/image1.bmp');
    Image.Transparent := False; //desactive la transparence
    Image.width:=16;
    Image.height:=16;
    Image.Canvas.CopyRect(Image.Canvas.ClipRect, OffsetRect(Image.Canvas.ClipRect, a, b),Form1.Canvas);//CopyRect ne prend pas en compte la transparence contrairement a Draw (cf. l'aide) (je suis pas tres sur des parametres, mais l'idee est la)
    Image.free;

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 23
    Points : 14
    Points
    14
    Par défaut
    c'est bon, mes images s'affichent correctement.
    Le clignotement est un peu plus faible mais persiste encore. Est-ce qu'il y a un autre moyen ou c'est tout ce que l'on peut faire ?

  7. #7
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    1-ou en est tu avec ce post..??
    2-voir openGL
    3-pourquoi tu change des images tout les seconds; surement il y a autre méthode à faire
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  8. #8
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 23
    Points : 14
    Points
    14
    Par défaut
    1 : pblm réglé
    2 : en fait, j'essaie de faire un jeu de la vie amélioré. C'est à dire qu'il y a des espèces d'animaux sur une carte, et ils interagissent. J'ai créé une grille et dedans je met mes animaux. Ensuite, j'ai une procédure qui, en fonction de la place dans la grille et de l'espèce affiche une image. J'ai un fond qui change aussi (j'ai différent ton de luminosité pour simuler la journée). Donc il faut que les générations avancent assez vite (si 1génération par seconde, ca risque d'être très long). Pour le pblm 1, je réaffiche le fond à chaque génération (bien que celui-ci change toutes les 4générations) puis las animaux(ca fait une superposition d'images mais je vois pas d'autre solution pr l'instant).
    Pour l'affichage, je suis à l'écoute de vos proposition parsque je vois bien que c'est un peu dur. (Le clignotement est assez marqué).

  9. #9
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 23
    Points : 14
    Points
    14
    Par défaut
    personne n'a d'idée pour m'aider ?
    je ne connais pas trop les méthodes pour l'affichage mais il existe peut etre un autre moyen que d'utiliser le canvas de la fiche ?

  10. #10
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    Citation Envoyé par Tyu38 Voir le message
    personne n'a d'idée pour m'aider ?
    je ne connais pas trop les méthodes pour l'affichage mais il existe peut etre un autre moyen que d'utiliser le canvas de la fiche ?
    il te faut effacer tous les sprites de leur ancienne position en transférant le morceau d'image de fond qui correspond. Ainsi, tu n'as plus à obturer la totalité de la fiche et tu gagnes en vitesse.

    copyrect te permet de copier un morceau d'image...

  11. #11
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 23
    Points : 14
    Points
    14
    Par défaut
    mon programme avance, il est presque fini. Seulement, j'ai toujours ce pblm d'affichage. J'ai entendu dire qu'on pouvait mettre en buffer l'image et la copier ensuite sur la fiche. Comme ca, ca évite le clignotement lors de l'affichage de l'image. J'ai pas trouvé grand chose sur le net. Est-ce que quelqu'un peut m'aider ?

  12. #12
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Il faut chercher du côté de la propriété DoubleBuffered pour ça
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  13. #13
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 23
    Points : 14
    Points
    14
    Par défaut
    oui oui, c'est déjà fait. On me l'avait proposé au début du topic. Ca améliore l'affichage mais il reste encore un peu de clignotement. C'est pas très genant non plus, mais c'est dommage que je n'arrive pas à faire mieux.

  14. #14
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Peut-être qu'il faudra travailler avec l'image en mémoire plutôt qu'un loadfromfile, si le rafraichissement est important, non?
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  15. #15
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 23
    Points : 14
    Points
    14
    Par défaut
    oui effectivement, j'avais changé ça. Ca évite de recharger l'image à chaque fois. Je gagne en rapidité mais la fluidité de l'affichage change pas.

Discussions similaires

  1. Création de page web depuis un fichier XML
    Par hoshizora dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 06/06/2012, 08h33
  2. Macro VBA de création de PDF automatique depuis un fichier EXCEL
    Par virgie31 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/11/2011, 11h34
  3. [XL-2007] Création automatique d'onglet depuis des fichiers
    Par grping dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/09/2009, 12h36
  4. Création d'un fichier .bmp avec PrintWindow
    Par Irken dans le forum Windows
    Réponses: 8
    Dernier message: 05/09/2007, 18h03
  5. afficher un bitmap 24/32 bits depuis un fichier
    Par cyber_N dans le forum MFC
    Réponses: 3
    Dernier message: 15/11/2004, 21h46

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