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

Composants FMX Delphi Discussion :

Comment sauvegarder une TPaintBox ?


Sujet :

Composants FMX Delphi

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 130
    Points : 95
    Points
    95
    Par défaut Comment sauvegarder une TPaintBox ?
    Bonjour à tous,

    Avant toutes choses, je vous souhaite de bonnes fêtes de fin d'années.

    Voici mon problème :

    J'ai réalisé un zone de dessin grâce à un TPaintBox, j'aimerais maintenant sauvegarder le dessin qui y a été dessiné sur le disque en bmp

    je savais le faire en delphi7 mais en FireMonkey Delphi Xe3, je n'y arrive pas. et je ne trouve pas d'exemple sur le net.

    Est ce que quelqu'un pourrais me donner une piste ?

    Merci d'avance

    Christophe

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    je pense qu'il faut passer par la méthode MakeScreenShot (je n'ai pas testé avec une TPaintbox mais un TRectangle)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var bmp : TBitMap;
         ...
    begin 
    .... 
    bmp:=Selection2.MakeScreenShot;
    try
    ...
      bmp.SavetoFile(nomfichier);
    finally
      bmp.free; // il me semble me souvenir qu'il y avait des fuites mémoires sous xe2
    end;
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 130
    Points : 95
    Points
    95
    Par défaut
    Merci pour cette Piste Sergio Master je vais essayer et te dire Quoi

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 130
    Points : 95
    Points
    95
    Par défaut
    Il n'y a plus de message d'erreur, Mais (Il y a toujours un mais) l'image que j'obtiens est toute noire

    Si vous avez d'autres idées... , n'hésitez pas, merci encore et bonne journées à tous.

  5. #5
    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
    Bonjour,

    krzysiu : Il n'y a plus de message d'erreur, Mais (Il y a toujours un mais) l'image que j'obtiens est toute noire
    Essaye ça :
    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
    function CopierEcran(xe, ye, we, he: integer): tBitMap; 
    // xe, ye = Coordonnées écran de l'angle supérieur gauche de la Zone à copier.
    // we, he = Width et Height de la Zone à copier
    var HandleDC: HDC; Picture: TPicture;
    begin
      HandleDC := GetDC(GetDesktopWindow);
      Picture:= TPicture.Create;
      try
        Picture.Bitmap.PixelFormat := pf32bit;
        Picture.Bitmap.Width := we;
        Picture.Bitmap.Height := he;
        BitBlt(Picture.Bitmap.Canvas.Handle, 0, 0, we, he,
          HandleDC, xe, ye, SrcCopy); //recopie l'image de la région d'écran dans PictureBureau
      finally
        Result := tBitMap.create;
        Result.Assign(Picture.BitMap);
        ReleaseDC(GetDesktopWindow, HandleDC);
      end;
    end; // CopierEcran(xe,ye,we,he : integer);
    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 130
    Points : 95
    Points
    95
    Par défaut
    Super Merci , J'essaye ... et je te dit Quoi...

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    Citation Envoyé par krzysiu Voir le message
    Il n'y a plus de message d'erreur, Mais (Il y a toujours un mais) l'image que j'obtiens est toute noire
    oui , moi aussi cependant il ne s'agit pas de la partie capture sensu stricto !
    pour preuve , j'ai rajouté 2 TImages sur une forme contenant un TPaintBox (les dessins dans la TPaintBox sont fixes dans mes essais , j'ai ajouté un tline et un tarc)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    procedure TForm1.Button1Click(Sender: TObject);
    var bmp : TBitmap;
    begin
    bmp:=ppPaintbox1.makeScreenShot;
    try
      bmp.savetofile('test0.jpg');
      image1.Bitmap.Assign(bmp);
      image2.Bitmap.LoadFromFile('test0.jpg');
    finally
      bmp.Free;
    end;
    end;
    constatation :étrangement, l'image1 est correcte ! il s'agit donc d'un problème "de fond" ou de transparence
    une autre tentative en changeant la couleur des éléments dans le paint box me le confirme , si je les mets en rouge ils apparaissent sur un fond noir

    1°solution mettre d'abord un rectangle 'blanc' : ça marche !
    2°solution gérer le fond : comme il se fait "tard" (cause cuisine) je passe la main
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  8. #8
    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
    Bonjour,

    Voici ci-dessous le rendu de la copie d'écran du message d'hier de Krzysiu réalisée avec la function CopierEcran(xe, ye, we, he: integer): tBitMap;

    A+ .
    Images attachées Images attachées  
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  9. #9
    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 : 54
    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 430
    Points
    28 430
    Par défaut
    pour avoir un PaintBox persistent, il suffit d'utiliser un Bitmap !

    sur le OnPaint de la PaintBox tu utilises le Canvas d'un Bitmap au lieu de celui de la PaintBox et tu termines par PaintBox1.Canvas.Draw(0, 0, LeBitmap);

    dès lors le bitmap tu l'as déjà, il suffit de l'enregistrer par un LeBitmap.SavetoFile()
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  10. #10
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 930
    Points : 1 960
    Points
    1 960
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    pour avoir un PaintBox persistent, il suffit d'utiliser un Bitmap !

    sur le OnPaint de la PaintBox tu utilises le Canvas d'un Bitmap au lieu de celui de la PaintBox et tu termines par PaintBox1.Canvas.Draw(0, 0, LeBitmap);

    dès lors le bitmap tu l'as déjà, il suffit de l'enregistrer par un LeBitmap.SavetoFile()
    Exact sauf qu'avec fmx, c'est plutôt la méthode DrawBitmap ( au lieu de Draw ) :

    http://docwiki.embarcadero.com/CodeE...s_%28Delphi%29

  11. #11
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Du coup, dans mon cerveau brumeux du matin, je me pose la question : Quelle est l'utilité d'une PaintBox ? il doit certainement y en avoir une!

    Hier en fin d'après midi , j'ai tenté l'approche en effaçant le canvas de la paintbox par la méthode canvas.clear(TAlphaColors.red) surprise c'est toute la forme qui est devenue rouge (après un premier repas de fête, arrosé avec modération, j'en suis resté là )
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  12. #12
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 130
    Points : 95
    Points
    95
    Par défaut
    Bonjour à tous,

    Merci de cet engouement à mon problème. justement, je me replonge ce matin sur ce problème.

    Pour Répondre à SergioMaster, effectivement la TPaintBox sert à recueillir un signature dessiné par l'utilisateur (AH !! tablette, quand tu nous tiens ....), que je stocke ensuite dans un base de données.

    Je regarde de près touts vos réponses et vous tiens au courant

    Merci encore a tous

  13. #13
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Re,
    Citation Envoyé par krzysiu Voir le message
    Pour Répondre à SergioMaster, effectivement la TPaintBox sert à recueillir un signature dessiné par l'utilisateur (AH !! tablette, quand tu nous tiens ....), que je stocke ensuite dans un base de données.
    Ma question était plus générale (à savoir : à quoi sert un Tpaintbox par rapport a un Timage par exemple)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  14. #14
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 130
    Points : 95
    Points
    95
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Re,


    Ma question était plus générale (à savoir : à quoi sert un Tpaintbox par rapport a un Timage par exemple)
    Ok, j'avais mal compris le sens de la question, je pensais quelle s’adressait a mon cas. Du coup, j'ai un doute. ai je bien fait d'utiliser un TPaintBox? je pense que oui, car c'est le seul composant sur lequel on puisse dessiner

  15. #15
    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 : 54
    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 430
    Points
    28 430
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Re,


    Ma question était plus générale (à savoir : à quoi sert un Tpaintbox par rapport a un Timage par exemple)
    TPaintBox permet de définir une zone de l'écran dans laquelle ont veux faire un dessin qui peut très bien être dynamique. TImage permet d'afficher un Bitmap, c'est tout.

    Attention, sous FMX, par défaut le parent ne Clip pas ses enfants contrairement à la VCL ou tu n'as pas le choix, notamment tu ne peux pas dessiner en dehors du canvas d'un TWinControl. En FMX tout l'espace de la fenêtre sert de zone de dessin pour l'ensemble de ses enfants.

    Pour faire un clin d'oeil à CSS is AWESOME j'ai fait ce composant FMX

    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
    61
    62
    63
    64
     
    unit Execute.AwesomeFMX;
     
    {
       Awesome FMX for XE6 (c)2014 by Paul TOTH <tothpaul@execute.re>
     
       http://www.execute.re
     
    }
     
    interface
     
    uses
      System.Classes, System.Types, System.UITypes,
      FMX.Controls, FMX.Graphics, FMX.Types;
     
    type
      TAwesomeFMX = class(TControl)
      public
        constructor Create(AOwner: TComponent); override;
        procedure Paint; override;
      published
        property Position;
        property Width;
        property Height;
      end;
     
    procedure Register;
     
    implementation
     
    procedure Register;
    begin
      RegisterComponents('Execute.SARL', [TAwesomeFMX]);
    end;
     
    { TAwesomeFMX }
     
    constructor TAwesomeFMX.Create(AOwner: TComponent);
    begin
      inherited;
      Position.X := 20;
      Position.Y := 20;
      Width := 320;
      Height := 160;
    end;
     
    procedure TAwesomeFMX.Paint;
    var
      R: TRectF;
    begin
      R := LocalRect;
      Canvas.Stroke.Color := TAlphaColorRec.Black;
      Canvas.Stroke.Thickness := 4;
      Canvas.DrawRect(R, 0, 0, [], 1);
      Canvas.Font.Family := 'Arial';
      Canvas.Font.Style := [TFontStyle.fsBold];
      Canvas.Font.Size := 48;
      Canvas.Fill.Color := TAlphaColorRec.Black;
      R.Right := R.Left + 320;
      Canvas.FillText(R, 'FMX'#13'IS'#13'AWESOME', False, 1, [], TTextAlign.Leading);
    end;
     
    end.
    Nom : AwesomeFMX.gif
Affichages : 713
Taille : 282,2 Ko

    en forçant "R.Right := R.Left + 320;" j'autorise la méthode FillText() à sortir du composant.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  16. #16
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Plus ça va , plus je me dit que cela ferait un excellent petit tutoriel pour débutant (ou pas ) ou FAQ (la première FAQ FMX ?)

    en fait, lors de mes essais j'ai abordé 2 approches
    - un canvas contenant un rectangle blanc
    - une tentative d'accéder directement au canvas d'un PaintBox (ça je crois comprendre que c'est pas possible )

    maintenant, rien n'empêche, si je comprend bien, de poser un timage voire un simple Trectangle et en enfant une paintbox

    Citation Envoyé par Paul
    pour avoir un PaintBox persistent, il suffit d'utiliser un Bitmap !
    lors de mes essais je n'ai pas utilisé de OnPaint (je tentais juste de récupéré un dessin déjà fait)

    de plus TMS proposant un composant pour les signatures, je ne suis pas aller chercher plus loin (quand on a une roue ...)


    Cependant, comme devoir de vacances (encore une journée à tirer) cela me plait bien! si les fêtes ne sont pas trop arrosées j'aimerais bien faire une petite tentative. Je suis sur d'avoir vu une démo de T.Laborde au sujet du dessin mais quelle année ? le devdujeudi ou un codeway tour, ma mémoire flanche! à moins que cela soit dans un blog de TMS
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  17. #17
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 930
    Points : 1 960
    Points
    1 960
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    TMS proposant un composant pour les signatures, je ne suis pas aller chercher plus loin (quand on a une roue ...)
    Pour ma part, je me suis inspiré d'un exemple en vidéo qui est sympa, c'est un bon début pour faire quelque chose d'interessant :


  18. #18
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    Citation Envoyé par SergioMaster Voir le message
    Je suis sur d'avoir vu une démo de T.Laborde au sujet du dessin mais quelle année ? le devdujeudi ou un codeway tour,
    Ma mémoire ne flanchait pas tant que ça : ledevdujeudi saison3 session de début d'après midi

    du coup, après avoir re-visionner la session, la phrase de Paul
    Citation Envoyé par Paul Thoth
    TPaintBox permet de définir une zone de l'écran dans laquelle ont veux faire un dessin qui peut très bien être dynamique. TImage permet d'afficher un Bitmap, c'est tout.
    ne me contente pas

    d'un autre coté donc , passer par un TImage répond à la problématique de krzysiu, rien de plus simple de faire un bitmap.savetofile !
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  19. #19
    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 : 54
    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 430
    Points
    28 430
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Bonjour,


    Ma mémoire ne flanchait pas tant que ça : ledevdujeudi saison3 session de début d'après midi

    du coup, après avoir re-visionner la session, la phrase de Paul

    ne me contente pas

    d'un autre coté donc , passer par un TImage répond à la problématique de krzysiu, rien de plus simple de faire un bitmap.savetofile !
    pas le temps de visionner la prose de Thierry, en quoi ma phrase te pose problème ? pour préciser, TPaintBox n'est pas persistent, à chaque réaffichage de la fenêtre le code du OnPaint est exécuté, avec un TImage il y a un Bitmap qui est dessiné sans recalcule. Mais rien n'empêche d'utiliser un Bitmap dans une PaintBox ou de modifier le Bitmap du TImage. ça revient grosso-modo au même, sauf qu'avec la PaintBox tu es libre d'utiliser plusieurs bitmaps, de le modifier sans provoquer un refresh etc..
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  20. #20
    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
    Bonjour,


    Paul TOTH : TPaintBox permet de définir une zone de l'écran dans laquelle on veux faire un dessin qui peut très bien être dynamique. TImage permet d'afficher un Bitmap, c'est tout.
    Pour le "c'est tout" cela a été un peu vite dit car on peut aussi faire un dessin sur le Canvas d'un Timage.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    image1.Canvas.Draw();
    image1.Picture.Bitmap.SaveToFile();
    A mon avis la principale différence entre un TPaintBox et un TImage découle du fait que le TPaintBox possède l'évènement OnPaint alors que le TImage n'en possède pas.

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

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/06/2007, 10h39
  2. Comment sauvegarder une adresse
    Par @min@ dans le forum Assembleur
    Réponses: 3
    Dernier message: 05/02/2007, 23h24
  3. [TIBBackUpService] Comment sauvegarder une base distante?
    Par kase74 dans le forum Connexion aux bases de données
    Réponses: 2
    Dernier message: 12/06/2006, 16h27
  4. Réponses: 1
    Dernier message: 24/05/2006, 11h00
  5. [Débutant] Comment sauvegarder une chaîne ?
    Par nmqm dans le forum Assembleur
    Réponses: 1
    Dernier message: 28/02/2006, 23h49

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