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 :

[TImage]Dessiner sans écraser ?


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Par défaut [TImage]Dessiner sans écraser ?
    Bonsoir tout le monde,

    Ma question est tout bête et je pense que la réponse aussi mais je n'ai pas réussi à la trouver seul.
    Soit un Timage sur une forme, disons Image1.
    Si une première fois je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Image1.Canvas.Brush.Color:=clWhite;
    Image1.Canvas.Pen.Color:=clBlack;
    Image1.Canvas.Rectangle(0,0,100,100);
    et que par la suite je redessine un nouveau rectangle (enfin carré ...) comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Image1.Canvas.Rectangle(20,20,150,150);
    là où mes deux rectangles se croisent, c'est en fait le dernier dessiné qui prend le dessus ... et ça m'efface toute la partie contenu dans mon nouveau dessin ... or moi je voudrais pouvoir voir mes deux carrés totalement sans soucis ...

    D'une façon représentative (mais non fonctionnelle évidemment) ce que je voudrais pouvoir faire en gros c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Image1.Canvas.Brush.Color:=Transparent;
    Par avance Merci pour votre aide

  2. #2
    Membre Expert Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 553
    Par défaut
    Ce n'est pas très clair : tu voudrais voir quoi à l'intersection de tes 2 carrés ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Par défaut
    Bonsoir,

    En gros voila tout en image :


    le carré 1 + la bordure en bleu est le premier carré dessiné ...

    le carré nommé 2 est le deuxième dessiné sauf que à sa création, les traits que j'ai représenté en bleus du carré 1 disparaissent ... Or moi j'aimerais que ces derniers persistent ... Comment faire ?



    quoiqu'il en soit merci de m'aider

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Février 2006
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 624
    Par défaut
    Bonsoir

    Voici la solution:

    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
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, Db, DBTables, Grids, DBGrids, Buttons, ExtCtrls;
    
    type
      TForm1 = class(TForm)
        Image1: TImage;
        BitBtn1: TBitBtn;
        procedure BitBtn1Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.DFM}
    
    
    
    procedure TForm1.BitBtn1Click(Sender: TObject);
    begin
      Image1.Canvas.Brush.Color:=clWhite;
      Image1.Canvas.Pen.Color:=clBlack;
      Image1.Canvas.Pen.Mode := pmMask;
      Image1.Canvas.Rectangle(0,0,100,100);
      Image1.Canvas.Rectangle(20,20,150,150);
    end;
    
    end.

  5. #5
    Membre éclairé
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Par défaut
    Merci beaucoup,

    je fais confiance je clos immédiatement et je test


    Merci encore

  6. #6
    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
    Par défaut
    Sinon tu avais aussi Canvas.FrameRect() au lieu de Canvas.Rectangle()

  7. #7
    Membre éclairé
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Par défaut
    Citation Envoyé par waskol
    Sinon tu avais aussi Canvas.FrameRect() au lieu de Canvas.Rectangle()
    Merci pour l'info mais ce qu'il y a c'est que pour l'exemple j'avais prit des rectangles mais en réalité ça peut également être des cercles .... à moins qu'il existe FrameEllipse .... ^^

    Merci tout de même pour l'info c'est toujorus bon a prendre

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 30/01/2014, 11h46
  2. [Panel]dessiner sans la méthode paint()
    Par paolo2002 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 20/10/2006, 02h35
  3. [C# 2.0] Modifier un dessin sans tout redessiner
    Par falcon dans le forum Windows Forms
    Réponses: 2
    Dernier message: 11/10/2006, 16h48
  4. Réponses: 10
    Dernier message: 01/01/2006, 17h20
  5. Réponses: 6
    Dernier message: 23/12/2005, 18h24

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