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

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

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    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
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

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

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

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

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    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
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

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

    Informations forums :
    Inscription : Février 2006
    Messages : 624
    Points : 754
    Points
    754
    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 actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

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

    je fais confiance je clos immédiatement et je test


    Merci encore
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

  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 : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Sinon tu avais aussi Canvas.FrameRect() au lieu de Canvas.Rectangle()
    Bidouilleuse Delphi

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

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    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
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

  8. #8
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Citation Envoyé par Bleys
    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 .... ^^
    Là tu marques un point
    Bidouilleuse Delphi

+ 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