1. #1
    Membre confirmé
    Avatar de ChPr
    Profil pro
    Inscrit en
    septembre 2005
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations forums :
    Inscription : septembre 2005
    Messages : 1 173
    Points : 466
    Points
    466

    Par défaut Rectangle de sélection

    Bonjour à toutes et à tous,

    J'ai deux applications, la première, qui existe de puis longtemps et une nouvelle que je suis en train de mettre au point.

    Dans chacune d'elles, le tracé d'un rectangle de sélection est diffèrent, voir image.Nom : RectSel.jpg
Affichages : 51
Taille : 22,9 Ko
    Sur la partie gauche, c'est mon application existante. On voit les pointillés noirs quand le fond est blanc et blancs quand le fond est noir.

    Sur la partie droite, c'est dans mon application en cours. Quand le fond est blanc, le pointillé est à peine visible.

    Pourtant :

    • Même compilateur IDE 1.2.4 (je viens de recompiler mon application existante) dans les deux cas,
    • les images sont celle placées dans un TImage lui même placé dans un TForm. Les TImage et TForm de chaque application ont les mêmes paramètres.
    • Mêmes valeurs d'initialisation dans le mouseDown(...) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Brush.Style:= bsClear;
        Pen.Style:= psDot;
        Pen.Mode:= pmNotXor;
        Pen.Color:= clBlack;
    Voilà, si vous avez une idée de que ce j'ai pu zapper pendant qu'il me reste encore quelques cheveux.

    Cordialement.

    Pierre

  2. #2
    Membre expérimenté
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    septembre 2015
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : septembre 2015
    Messages : 475
    Points : 1 305
    Points
    1 305

    Par défaut

    Citation Envoyé par ChPr Voir le message
    Bonjour à toutes et à tous,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Brush.Style:= bsClear;
        Pen.Style:= psDot;
        Pen.Mode:= pmNotXor;
        Pen.Color:= clBlack;
    Voilà, si vous avez une idée de que ce j'ai pu zapper pendant qu'il me reste encore quelques cheveux.

    Cordialement.

    Pierre
    Bonjour Pierre

    Bon courage si tu veux refaire ton logiciel de retouche d'image avec les TBitmap de Lazarus. En attendant que je sorte ma bibliothèque, je te conseil vivement de passer à BGRABitmap pour tout ce qui est graphisme avec Lazarus

    Sinon pour ton problème lla 2ème couleur des mode Xor/NotXor... est liée à Brush.Color

    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
     
          // Remplissage du fond
       Image.Canvas.Pen.Color:=clBlack;
       Image.Canvas.Brush.Color :=  clWhite;
       Image.Canvas.Brush.Style := bsSolid;
       Image.Canvas.Rectangle(0,0,Image.Width,Image.Height);
       Image.Canvas.Pen.Color:=clRed;
       Image.Canvas.MoveTo(50, 50);
       Image.Canvas.LineTo(50, 150);
       Image.Canvas.LineTo(150, 150);
       Image.Canvas.LineTo(150, 50);
       Image.Canvas.LineTo(50, 50); 
       {$IFDEF WINDOWS}
         Image.Canvas.Brush.Color :=  clGreen;
         Image.Canvas.FloodFill(55, 55, clWhite, fsSurface);
       {$ELSE}
         Image.Canvas.FloodFill(55, 55, clGreen); 
       {$ENDIF}
       Image.Canvas.Brush.Color :=  clRed;
       Image.Canvas.Pen.Color:=clWhite;
       Image.Canvas.Pen.Mode := pmNotXor;
       Image.Canvas.Pen.Style := psDot;
       Image.Canvas.MoveTo(40, 40);
       Image.Canvas.LineTo(110, 40);
       Image.Canvas.LineTo(110, 110);
       Image.Canvas.LineTo(40, 110);
       Image.Canvas.LineTo(40, 40);
    PS : cf : Nos dernières discussions avec Naute https://www.developpez.net/forums/d1...sion-expected/

    Résultat sous Windows (car sous Linux cela risque d'être différent )

    Nom : 2018-05-12_144724.jpg
Affichages : 43
Taille : 4,7 Ko


    PS : Des cheveux j'en ai déjà plus, le peu qu'il me restait je l' ai perdu avec le graphisme sous Lazarus

    Jérôme
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

  3. #3
    Membre confirmé
    Avatar de ChPr
    Profil pro
    Inscrit en
    septembre 2005
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations forums :
    Inscription : septembre 2005
    Messages : 1 173
    Points : 466
    Points
    466

    Par défaut

    Citation Envoyé par BeanzMaster Voir le message
    ... Bon courage si tu veux refaire ton logiciel de retouche d'image avec les TBitmap de Lazarus. ...
    La version à laquelle je compare ce que je suis en train de créer, est une version faite avec Lazarus et qui, si mes souvenirs sont exacts, fonctionne correctement sous Linux ( sinon, pourquoi l'aurais-je faite !).

    Citation Envoyé par BeanzMaster Voir le message
    ... Sinon pour ton problème lla 2ème couleur des mode Xor/NotXor... est liée à Brush.Color ...
    Je viens d'essayer avec différentes couleurs de Brush .. sans aucune action.

    Par contre, je tiens peut-être une piste.

    Il semble que la partie noire du rectangle de sélection soit liée à la source de l'image. En effet, si je charge une image à partir d'un fichier, tout se passe bien comme dans mon logiciel de traitement d'image. Par contre, si l'image vient d'une copie d'écran c'est là que ça ne va plus :

    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
    function GetScreenshot: TBitmap; // fonction que tu m'as proposée et qui copie bien l'écran
    var
      screenDC: HDC;
    begin
      screenDC:= GetDC(0);
      try
        Result:= TBitmap.Create;
        Result.LoadFromDevice(screenDC);
      finally
        ReleaseDC(0, screenDC);
      end;
    end;
     
    procedure TAffImg.FormShow(Sender: TObject);
    var
      Bmp: TBitmap;
    begin
      Bmp:= TBitmap.Create;
      Bmp.LoadFromFile('C:\Image_Test.bmp'); // avec cette ligne, ça fonctionne.
      Bmp.Assign(GetScreenshot); // avec celle-ci, ça ne fonctionne plus !
      GetScreenShot.Free;
      ImgSrc.Picture.Assign(Bmp);
      Bmp.Free;
    end;
    Que faut-il faire subir à la copie d'écran pour qu'lle se comporte comme une image enregistrée ?

    Cordialement.

    Pierre

  4. #4
    Membre confirmé
    Avatar de ChPr
    Profil pro
    Inscrit en
    septembre 2005
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations forums :
    Inscription : septembre 2005
    Messages : 1 173
    Points : 466
    Points
    466

    Par défaut

    Citation Envoyé par ChPr Voir le message
    ... Que faut-il faire subir à la copie d'écran pour qu'elle se comporte comme une image enregistrée ? ...
    Je me réponds. En fait, le bitmap issu de la copie d'écran est au format 32 bits. Dans mon application de traitement d'image, je me suis aperçu qu'au chargement d'un fichier, il imposait au bitmap un format 24 bit.

    J'ai donc, au passage, transformé le format de ma copie d'écran en 24 bits ... et ça marche

    Et sous Linux aussi

    Cordialement.

    Pierre

  5. #5
    Membre expérimenté
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    septembre 2015
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : septembre 2015
    Messages : 475
    Points : 1 305
    Points
    1 305

    Par défaut

    Bonjour
    Citation Envoyé par ChPr Voir le message
    La version à laquelle je compare ce que je suis en train de créer, est une version faite avec Lazarus et qui, si mes souvenirs sont exacts, fonctionne correctement sous Linux ( sinon, pourquoi l'aurais-je faite !).
    Heu
    Citation Envoyé par ChPr Voir le message
    Bonjour à toutes et à tous,

    J'ai deux applications, la première, qui existe de puis longtemps et une nouvelle que je suis en train de mettre au point.
    Ton application dont tu fais référence ici est écrite en Delphi

    Citation Envoyé par ChPr Voir le message
    Je me réponds. En fait, le bitmap issu de la copie d'écran est au format 32 bits. Dans mon application de traitement d'image, je me suis aperçu qu'au chargement d'un fichier, il imposait au bitmap un format 24 bit.

    J'ai donc, au passage, transformé le format de ma copie d'écran en 24 bits ... et ça marche

    Et sous Linux aussi
    Ne trouve tu pas dommage que de pouvoir travailler que sur des images 24 bits ? et de ne pas pouvoir prendre en charge la transparence ?

    Bon dimanche
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

  6. #6
    Membre confirmé
    Avatar de ChPr
    Profil pro
    Inscrit en
    septembre 2005
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations forums :
    Inscription : septembre 2005
    Messages : 1 173
    Points : 466
    Points
    466

    Par défaut

    Citation Envoyé par BeanzMaster Voir le message
    ... Ton application dont tu fais référence ici est écrite en Delphi :weird ...
    Oui, c'est vrai, celle qui est sur mon site est écrite en Delphi, mais cela fait belle lurette que je l'ai transposée en Lazarus et c'est à cette dernière que je fais référence pour mes comparaisons.

    Citation Envoyé par BeanzMaster Voir le message
    ... Ne trouve tu pas dommage que de pouvoir travailler que sur des images 24 bits ? et de ne pas pouvoir prendre en charge la transparence ? ...
    Tu as raison. mais je perds la visualisation de mon rectangle de sélection. C'est mineur, c'est vrai, mais faire une sélection sans voir ce qui est sélectionné !

    Par ailleurs, de tous les logiciels que j'ai utilisés pour me faire des cartes, ils m'ont tous sorti des bmp 24 bits et il n'y a pas beaucoup (que je connaisse) de fichiers pour GPS qui utilisent la transparence (le *.kmz : oui, mais c'est très lent)

    Mais je me mets ça sous le coude.

    Cordialement.

    Pierre

Discussions similaires

  1. dessiner un rectangle de sélection
    Par ninours23 dans le forum GTK+ avec C & C++
    Réponses: 4
    Dernier message: 13/02/2008, 16h51
  2. Réponses: 6
    Dernier message: 30/01/2008, 21h05
  3. Rectangle de sélection "bleuté" style Explorateur
    Par phplive dans le forum Langage
    Réponses: 2
    Dernier message: 02/03/2006, 15h22
  4. Rectangle de sélection
    Par duckaurore dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 12/01/2006, 16h43
  5. [Info]Rectangles de sélection : logiciel de dessin ?
    Par rozwel dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 27/03/2004, 17h49

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