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. #21
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    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 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    re,

    Faut pas te fâcher Paul, c'est juste que ton explication n'était pas suffisante (de mon point de vue)

    voici un petit truc fait à la va-vite (pas de casse-tête, au plus simple) avec un TImage pour 'peindre' et un autre pour vérifier après sauvegarde
    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
     
    type
      TForm1 = class(TForm)
        Sauver: TButton;
        Image2: TImage;
        Label2: TLabel;
        Effacer: TButton;
        Signature: TImage;
        procedure ppPaintBox1MouseUp(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Single);
        procedure FormCreate(Sender: TObject);
        procedure SignatureMouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Single);
        procedure SignatureMouseMove(Sender: TObject; Shift: TShiftState; X,
          Y: Single);
        procedure SignatureMouseUp(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Single);
        procedure EffacerClick(Sender: TObject);
        procedure SauverClick(Sender: TObject);
      private
        { Déclarations privées }
        painting : boolean;
        OldX, OldY : Single;
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.fmx}
     
    procedure TForm1.EffacerClick(Sender: TObject);
    begin
    With Signature.Bitmap.Canvas do
     begin
       BeginScene;
       Clear(TAlphacolors.white);
       EndScene;
     end;
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    Painting:=False;
    GlobalUseGPUCanvas:=true;
    Signature.Bitmap.SetSize(trunc(Signature.Width),trunc(Signature.Height));
    With Signature.Bitmap.Canvas do
     begin
       BeginScene;
       Stroke.Thickness:=2;
       Stroke.Color:=TAlphaColorRec.Black;
       Stroke.Kind:=TBrushKind.bkSolid;
       EndScene;
     end;
     
    end;
     
    procedure TForm1.SauverClick(Sender: TObject);
    begin
    Signature.Bitmap.SaveToFile('Signature.jpg');
    Image2.Bitmap.LoadFromFile('Signature.jpg');
    end;
     
    procedure TForm1.SignatureMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Single);
    begin
    Painting:=true;
    OldX:=X;
    OldY:=Y;
    end;
     
    procedure TForm1.SignatureMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Single);
    var Point1,Point2 : TPointF;
    begin
    if Painting then
    begin
      Point1:=TPointF.Create(OldX,OldY);
      Point2:=TPointF.Create(X,Y);
      with Signature.Bitmap.Canvas do
       begin
       BeginScene;
       DrawLine(Point1,Point2,1);
       EndScene;
       end;
      oldx:=X;
      oldy:=Y;
    end;
    end;
     
    procedure TForm1.SignatureMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Single);
    begin
     Painting:=False;
    end;
     
    procedure TForm1.ppPaintBox1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Single);
    begin
    painting:=false;
    end;
    Nom : signature.PNG
Affichages : 240
Taille : 16,0 Ko

    nb. pour qu'il fonctionne, il faut d'abord effacer l'image sinon on a du noir/noir (faudrait juste un clear au niveau du forme create )
    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

  2. #22
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    931
    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 : 931
    Points : 1 909
    Points
    1 909
    Par défaut
    Citation Envoyé par Gilbert Geyer Voir le message
    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+.
    Bonjour,

    Si si, avec fmx, TImage possède un évènement OnPaint

  3. #23
    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
    Re-salut,

    free07 : Si si, avec fmx, TImage possède un évènement OnPaint
    Oups, autant pour moi, je n'en suis pas encore à Fmx mais à D6.

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

  4. #24
    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, et merci pour vos réponses

    avant toutes choses, je vous souhaite une très bonne années 2015 à vous et à vos proches

    j'avais un temps disparu, car il fallait que le projet avance, et me revoilà confronté à ce problème. je vais donc étudier et tester les solutions que vos proposez. Merci à tous

    Sergio Master, effectivement, j'avais pense en faire une petit tutoriel dès que j'aurais fait le tour du problème, je vous le soumettrai...

    Merci encore est à très vite

  5. #25
    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
    ... de plus TMS proposant un composant pour les signatures, je ne suis pas aller chercher plus loin (quand on a une roue ...)
    effectivement, tu as raison, il ne faut pas réinventer le fils à couper le beurre, mais je suis en XE3, et leur version n'est pas comptatible , je leurs ai posé la question.

    Voilà pourquoi, je me prends la tête

  6. #26
    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
    je viens tester le code de Sergio Master qui fonctionne à merveille comme quoi, il ne faut pas se prendre la tête. et j'ai ajouter l'effacement comme c'est fait dans ce code est là CA MARRCHHEEE

    Maintenant, une question me vient à l'esprit, je me jette par la fenêtre tout de suite ou j'attends encore une peu.....


    Merci beaucoup à tous, je vais essayer de synthétiser tout ça et comme le propose Sergio Master, peut être en faire un tuto, mon premier... va falloir arroser çà

    Merci encore à tous , grâce à vous , je ne vais me coucher moins bête ce soir.

  7. #27
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    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 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par krzysiu Voir le message
    Maintenant, une question me vient à l'esprit, je me jette par la fenêtre tout de suite ou j'attends encore un peu.....
    je peux proposer la corde, le fusil, le poison ....

    en tout cas content que ce "petit machin" fonctionne , je ne l'avais tester que via le touchpad de mon portable et pas via une tablette
    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. #28
    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
    oula ,tu as raison, j'ai testé à la souris.

    je vais faire le test avec une tablette W8.1 et je vous dit quoi.

    Pour ce qui est de passer par le fenêtre, je pense que je vais attendre encore un peu histoire de pouvoir vous donner d'autre os à ronger. Mais merci pour tes autres propositions

  9. #29
    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,

    En cette veille de Week end, je suis à nouveau face à un problème, Car Jai testé comme me l'a préconisé Sergio Master sur une tablette, et devinez quoi ??, rien ne se trace

    Je vais ouvir un autre sujet, pour ne pas polluer celui-ci qui très bien pour résoudre ce problème.

    Voici le lien de cette nouvelle énigme :
    http://www.developpez.net/forums/d14...oigt-tablette/

    Merci Et bon week-end

    Christophe

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

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