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 :

Problème d'affichage d'image de fond


Sujet :

Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13
    Points : 7
    Points
    7
    Par défaut Problème d'affichage d'image de fond
    Rebonjour à tous (désolé si je flood le forum ^^).

    J'ai un petit problème avec l'affichage de l'image de fond de mon programme.
    J'ai suivi la procedure indiquée dans la FAQ : http://www.developpez.com/delphi/faq...ion#imagefiche
    Chez moi tout marche très bien, mais quand je veux le passer à un ami, il a la fenêtre sans l'image et a un message d'erreur précisant que l'image est introuvable (puisqu'il ne l'a pas sur son pc). Comment remédier à ce problème d'image pour que tout le monde puisse l'ouvrir correctement ?

    Merci d'avance pour les réponses.

    Print'

  2. #2
    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 : 59
    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
    je n'ai pas regardé ton lien mai moi je charge mon image dans un timage etje fais un copyrect dans le canvas d'une paintbox ou de la form.
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    canvas.copyrect(paintbox1.ClientRect,image1.picture.Bitmap.canvas,rect(0,0,430,430));
    le rect source correspond à la dim de mon image bmp.
    plus besoin de se trimbaler l'image avec l'exe, il est dans le Timage (image1 ici) !

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Mais le problème du TImage c'est qu'il masque tout le reste .
    A moins que ta technique ne masque pas les label et compagnie, je pense que le TImage ne soit pas la solution .

  4. #4
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    Citation Envoyé par Print'
    Comment remédier à ce problème d'image pour que tout le monde puisse l'ouvrir correctement ?
    Tu as plusieurs solutions:
    • Mettre l'image dans un TImage invisible
    • Mettre l'image dans un TImageList
    • Mettre l'image en resource
    • Fournir l'image avec ton prog

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Bonjour Pedro.

    Pour le TImage invisible, comme faire ? puisque je suppose qu'il ne fait pas mettre visible=False
    Pour mettre l'image en ressource, comment faire également ?

    Comme t'as dû le voir je débute donc excusez moi si je ne comprends pas tout .

    Merci d'avance.

  6. #6
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Citation Envoyé par Print'
    Pour le TImage invisible, comme faire ? puisque je suppose qu'il ne fait pas mettre visible=False
    Si. C'est pas franchement propre mais bon...
    La méthode du TImageList est mieux
    Citation Envoyé par Print'
    Pour mettre l'image en ressource, comment faire également ?
    Comme t'as dû le voir je débute donc excusez moi si je ne comprends pas tout .
    Ce n'est pas une excuse pour ne pas avoir recherché
    http://delphi.developpez.com/faq/?pa...ererresdansexe

  7. #7
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Salut,

    Ton problême vien du fait que tu ne livre pas l'image à ton ami (elle doit se trouver dans le même répertoire que ton application)

    Pour pouvoir afficher ton image, elle doit bien exister quelque part, non ?

    D'où deux méthodes :

    1 ) Soit sur le disque dur :
    C'est ce que te suggère en effet la FAQ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      Bitmap.LoadFromFile('MyBitmap.bmp');
    cette instruction charge l'image à partir d'un fichier image (Load From File = Charge Depuis Fichier)

    Dans ce cas, il te faut fournir ET ton exe, ET ton image (toutes les deux dans le même répertoire)

    2)Soit directement intégrée dans l'executable de ton application :
    c'est la méthode suggérée par exemple par Pédro
    On appelle celà mettre un fichier en tant que resource.

    Dans ce cas, puisque ton image est "fusionnée" à ton executable, tu n'as plus besoin que de livrer ton programme (par contre il sera plus gros, si ton image fait 1Mo, ton executable, grossis de 1Mo)

  8. #8
    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 : 59
    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
    Ecoute, je viens de tester en rajoutant un bouton sur ma fiche...
    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
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Borland.Vcl.ExtCtrls, System.ComponentModel, Borland.Vcl.StdCtrls;
     
    type
      TForm1 = class(TForm)
        PaintBox1: TPaintBox;
        Image1: TImage;
        Button1: TButton;
        procedure PaintBox1Paint(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Déclarations privées}
        fonddefiche:Tbitmap;
      public
        { Déclarations publiques}
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.nfm}
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    fonddefiche:=tbitmap.create;
    fonddefiche.assign(image1.Picture.Graphic);
    end;
     
    procedure TForm1.PaintBox1Paint(Sender: TObject);
    begin
    paintbox1.Canvas.Draw(0,0,fonddefiche);
    end;
     
    end.
    pas de problème...
    en effet, j'avais oublié de te dire de mettre avec ton timage visible à false.
    salut

  9. #9
    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 : 59
    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
    +paintbox1.align:=alclient autant pour moi.
    et ma photo est au format jpeg.
    sinon à la place de graphic--->bitmap.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Ca ne change pas le problème, on ne voit toujours pas le texte que je dois afficher .
    Et puis si je mets Visible=False, on ne voit plus le fond du tout .

    Je ne sais vraiment pas quoi faire ~~.

  11. #11
    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 : 59
    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
    je ne vois pas pourquoi en modifiant le canvas de ta form par exemple, tu changerais le fait que tes contrôles ne soient pas visbles ?
    c'est pas logique....

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Désolé mais je n'ai pas très bien compris ce que tu as dit :s.
    Ce que je veux faire en fait c'est afficher un fond que j'ai réalisé puis superposer du texte dessus (j'ai fait un fond noir avec un cadre vert pour écrire les résultats dessus), or le TImage masque tout le texte .
    J'ai essayé ton code et ça masque toujours les TLabel.

  13. #13
    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 : 59
    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
    attends le timage, tu ne le vois pas !
    sa propriété visible est à false !
    !!!!!!!!!!!!!!!!!!!!!!!

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 624
    Points : 754
    Points
    754
    Par défaut
    Je ne vois plus où se situe le probleme dans la mesure ou Waskol et Pedro t'ont apporté la solution.
    Ton image-> dans une ressource.
    Tu la charge dans le canvas de la fiche à la création ( Canvas.Draw ou Canvas.StretchDraw)
    Dans le OnResize de la fiche tu écrit un Repaint.


    Bon développement
    @+


    ---
    Ne pas oublier le Tag ou :delestage:

  15. #15
    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 : 59
    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
    oui avec stretchdraw,c'est encore une solution.

    je vois pas où ça marche pas !!!!!

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls, jpeg;
     
    type
      TForm1 = class(TForm)
        PaintBox1: TPaintBox;
        Image1: TImage;
        Label1: TLabel;
        procedure FormResize(Sender: TObject);
        procedure PaintBox1Paint(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Déclarations privées }
        w,h:integer;
        fond:tbitmap;
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    width:=screen.Width div 2;
    height:=screen.Height div 2;
    position:=poscreencenter;
    fond:=tbitmap.Create;
    fond.assign(image1.Picture.Graphic);
    end;
     
    procedure TForm1.PaintBox1Paint(Sender: TObject);
    begin
    paintbox1.Canvas.stretchdraw(paintbox1.ClientRect,fond)
    end;
     
    procedure TForm1.FormResize(Sender: TObject);
    begin
    w:=form1.clientwidth;
    h:=form1.ClientHeight;
     
    with paintbox1 do begin
    width:=w ;
    height:=h;
    left:=0;
    top:=0
    end;
     
    end;
     
    end.
    tu as la solution clé en main..................

Discussions similaires

  1. problème lors de l'affichage des images de fond
    Par toutouz dans le forum VC++ .NET
    Réponses: 0
    Dernier message: 10/05/2011, 15h21
  2. Réponses: 4
    Dernier message: 21/01/2008, 17h36
  3. Problème d'affichage d'image
    Par AurelBUD dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/09/2005, 12h56
  4. Priorité d'affichage des image de fond.
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 06/09/2005, 19h02
  5. CSS Probléme d'affichage d'images
    Par tebonb dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 01/06/2005, 19h35

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