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 :

Écrire sur une image


Sujet :

Delphi

  1. #21
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 450
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 450
    Points : 1 336
    Points
    1 336
    Par défaut Ok
    @ Dragonno, le but de comprendre sert à tous, tu proposais un code erroné concernant le topic de sky88 et la façon de charger un png dans un Tbitmap comme tu l'indiquais.

    Il est vrai que le format png propose en plus la transparence et comme image de fond pour un Tedit c'est mieux qu'un Bitmap ou Jpg.

    Quoi que ces deux formats fonctionnent aussi.

    @+,

    Cincap

  2. #22
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    598
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 598
    Points : 628
    Points
    628
    Par défaut
    Bon bein au moins on a fait avancer le schmilblik puisque on sait à quoi s'attendre en utilisant l'un ou l'autre format.
    Je pense à un truc, c'est que mon code n'etait pas erroné si l'utilisateur utilise un bmp, hors j'ai bien précisé que moi j'utilisais un png mais que l'utilisateur lui n'était pas obligé de l'utiliser.
    Bon ce qui m'a induit en erreur c'est le mauvais format de mon image, mais ce qui reste vrai c'est que le code reste valable et efficace si on met un bmp à la place d'un png (dans le dernier code je libere la variable image).

  3. #23
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 450
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 450
    Points : 1 336
    Points
    1 336
    Par défaut Vu comme cela oui mais....
    @ Dragonno, vu comme cela oui mais ton code ne devait pas être ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TForm1.Button1Click(Sender: TObject);
    begin
     dc:=getwindowDC(edit1.handle);
      // lier le canvas au contexte graphique
     image:=TBitmap.create;
    image.LoadFromFile('fond.png');  
    Canvas.handle:=dc;
      Canvas.draw(0,0,image);
      image.free;
      releaseDC(dc,0);
    end;
    D'ou le but de ma réaction pour les autres débutants.

    Maintenant tu n'as fait qu'appliquer la solution du membre Archimède.

    @+,

    Cincap

  4. #24
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    598
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 598
    Points : 628
    Points
    628
    Par défaut
    Oui oui tout à fait, c'est pas un code de ma fabrication, j'ai juste repris le terme "mon code" en langage parlé parce que tu l'a utilisé en me disant "ton code" mais c'est vrai c'est pas mon code je le précise au cas où

    Merci de tes interventions en tous cas, ça a été très utile je trouve, en tous cas pour moi au moins

    Tiens j'en profite pour afficher le code d'ARCHIMEDE que j'ai modifié^^ :

    Solution pour afficher une image en fond d'un TEdit :
    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
     
    unit test;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      ExtCtrls, StdCtrls;
     
    type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
    Form1:TForm;
    image1,image2:TBitmap;
    dc:THandle;
     
    implementation
     
    {$R *.DFM}
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      //lire le contexte graphique de Edit1 et le mettre dans la variable dc
     dc:=getwindowDC(edit1.handle);
      //Créer la variable image1 en bitmap pour charger l'image bitamap (BMP).
      image1:=TBitmap.create;
      //Créer la variable image2 en bitmap pour utiliser son canvas.
      image2:=TBitmap.create;
      //Charger une image bitmap dans la variable image1.
      image1.LoadFromFile('fond.bmp');
      // lier le canvas d'image2 au contexte graphique de Edit1
      image2.Canvas.handle:=dc;
      //Afficher la variable image (le bitmap) dans le canvas.
      image2.Canvas.draw(0,0,image1);
      //Libérer les variables images.
      image1.free;
      image2.free;
     
      //Libérer le contexte de dc
      releaseDC(dc,0);
    end;
     
    end.

  5. #25
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 450
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 450
    Points : 1 336
    Points
    1 336
    Par défaut Pourquoi 2 bitmaps
    @ Dragonno, pourquoi te compliquer la vie avec 2 bitmaps alors que ceci revient au même :

    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.Button3Click(Sender: TObject);
    var
    dc:THandle;
    image1 : Tbitmap ;
    begin
      dc:=getwindowDC(edit1.handle);
      image1 := TBitmap.create;
      image1.LoadFromFile('fond.bmp');
      Canvas.handle:=dc;
      Canvas.draw(0,0,image1);
      releaseDC(dc,0);
     
      image1.Free;
     
    end;
    @+,

    Cincap

  6. #26
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    598
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 598
    Points : 628
    Points
    628
    Par défaut
    Parce que le canvas utilisé dans ce cas est celui du Bouton où on clique, je voulais juste utiliser un canvas juste fait pour ça (celui de image2), comme ça je peu le libérer l'esprit tranquille car je me disais que c'était pas propre de libérer le canvas qui est celui du bouton.
    (image1 c'est bien sur le canvas du bouton qu'elle va se dessiner, mais comme on lui fait une redirection de handle c'est l'edit qui prend l'image1, cependant je me disais est-ce quil ne faut pas rendre le canvas au bouton après ?)

  7. #27
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 450
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 450
    Points : 1 336
    Points
    1 336
    Par défaut ?
    @ Dragonno, le click du button est une commande, et cela n'a rien à voir avec son canvas.

    L'image est reliée au Tedit par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var
    dc:THandle;
    image1 : Tbitmap ;
    begin
      dc:=getwindowDC(edit1.handle);  image1 := TBitmap.create;
      image1.LoadFromFile('fond.bmp');
      Canvas.handle:=dc;
      Canvas.draw(0,0,image1);
      releaseDC(dc,0); 
      image1.Free;
     
    end;
    Maintenant, si tu écris un texte dans ce Tedit après, ton image s'éffacera sans doute !.

    @+,

    Cincap

  8. #28
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    598
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 598
    Points : 628
    Points
    628
    Par défaut
    Je croyais que le canvas utilisé dans un bloc sans nom de composant devant le canvas signifiait que le canvas ainsi déclaré seul était automatiquement celui du composant qui controle ce bloc.
    Du style :
    Form1.Click blablabla
    begin
    canvas.draw(blablabla) <--- Ce canvas est automatiquement celui du Form1.
    end;

    De même :

    Form1.Button1.Click blablabla
    begin
    canvas.draw(blablabla) <--- Ce canvas est automatiquement celui du bouton1.
    end;

    Merci de m'apprendre des trucs

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [GD] Écrire sur une image existante
    Par lemirandais dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 14/01/2009, 23h47
  2. [GD] Est il possible écrire avec PHP sur une image JPG ?
    Par arnaudperfect dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 28/11/2008, 17h36
  3. Écrire sur une image
    Par djdolphin dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 18/01/2007, 22h12
  4. Comment écrire sur une image, dans un cadre ?
    Par Nutrino dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 20/05/2005, 00h55
  5. [HTML]Peut-on écrire un texte sur une image ?
    Par flogreg dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 28/02/2005, 17h24

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