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 :

j'vois pas mon image !


Sujet :

Delphi

  1. #1
    Membre habitué Avatar de Laskar
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Mai 2002
    Messages : 228
    Points : 139
    Points
    139
    Par défaut j'vois pas mon image !
    Bonjour,

    J'ai une form avec un TImage en fond. J'aimerais, à la création de ma fiche, charger et afficher une image (qui se trouve sur le disque). La procédure 'LoadSprite' se lance dans l'évènement 'OnCreate' de ma fiche.
    Voici mon code :
    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
    unit Main;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls, jpeg;
     
    type
      TForm1 = class(TForm)
        img_Fond: TImage;
        b_Quit: TButton;
        procedure b_QuitClick(Sender: TObject);
        procedure LoadSprite(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
      Sprite : TBitMap;
     
    implementation
     
    {$R *.dfm}
     
    //--------------------------------------------------
    procedure TForm1.b_QuitClick(Sender: TObject);
    begin
      Application.Terminate;
    end;
     
    //---------------------------------------------------
    procedure TForm1.LoadSprite(Sender: TObject);
    begin
        Sprite := TBitmap.Create;
        Sprite.LoadFromFile('Sprite.bmp');
    end;
     
    end.
    Il doit manquer un truc ... Mon 'sprite' ne s'affiche pas. Pourquoi ?

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 393
    Points : 637
    Points
    637
    Par défaut
    c'est normal que cela ne s'affiche pas, ta zone d'affichage c'est img_fond donc img_fond.picture.loadfromfile(...)

    si tu tiens à passer par un TBitmap intermédiaire fais img_fond.Picture.assign(sprite);

    n'oublie pas de libérer ton sprite lorsque tu ne t'en sers plus car là a chaque appel à LoadSprite tu as une belle fuite mémoire vue que tu recrées un sprite sans l'avoir libéré

    donc au minimum teste si sprite n'existe pas avec un

    if not assigned(sprite) then sprite := TBitmap.create;

    tu devrais aussi déclarer sprite comme une variable de ta forme cela serait plus propre

  3. #3
    Membre habitué Avatar de Laskar
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Mai 2002
    Messages : 228
    Points : 139
    Points
    139
    Par défaut
    Bin, en fait, j'aimerais que mon sprite s'affiche SUR l'image de fond ...
    N'est-il pas possible d'ajouter une image à ma form par programmation ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 393
    Points : 637
    Points
    637
    Par défaut
    si mais alors tu crées une autre TImage auquel tu donnes le même parent que img_fond un truc dans le genre...

    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
    procedure TForm1.LoadSprite(Sender: TObject);
    begin
     
     if not assigned (sprite) then
     begin
      sprite := TImage.create(self);
      sprite.Parent := img_fond.Parent;
      // sprite.Width  := ... // largeur
      // sprite.Height := ... // hauteur
      sprite.Left   := img_fond.Left + 10;
      sprite.Top   := img_fond.Top + 10;
      sprite.Transparent := true; // si tu veux un fond transparent
     end;
     
     Sprite.picture.LoadFromFile('Sprite.bmp');
    end;
    donc ton Sprite est un TImage et non pas un TBitmap !

    tu peux aussi poser directement ton Sprite sur ton img_form depuis delphi donc tu n'auras pas à le créer par code.

    si tu comptes faire un jeu ce genre de techniques n'est pas la plus optimale.

Discussions similaires

  1. je ne vois pas mon erreur
    Par achta dans le forum Débuter
    Réponses: 3
    Dernier message: 16/07/2009, 12h28
  2. Je ne retrouve pas mon image !
    Par BenjaminLustrement dans le forum C
    Réponses: 10
    Dernier message: 18/06/2008, 03h34
  3. [XP] Je ne vois pas mon groupe de travail
    Par sarahG dans le forum Administration
    Réponses: 10
    Dernier message: 18/03/2008, 09h46
  4. Je ne vois pas mon MP3 ds le poste de Travail
    Par Guesh13 dans le forum Audio
    Réponses: 7
    Dernier message: 05/04/2007, 16h45
  5. Réponses: 1
    Dernier message: 10/01/2007, 23h37

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