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

Langage Delphi Discussion :

Redimensionner taille d'un TImage + dessin sur canvas


Sujet :

Langage Delphi

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2002
    Messages : 245
    Points : 154
    Points
    154
    Par défaut Redimensionner taille d'un TImage + dessin sur canvas
    Bonjour,

    Voici un petit code pour montrer le proleme que j'ai:
    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
    type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        ScrollBox1: TScrollBox;
        Image1: TImage;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Image1.Width :=  Image1.Width + 100;
      Image1.Canvas.Rectangle(0,0,Image1.Width-1, Image1.Height);
    end;
     
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      Image1.Width :=  Image1.Width - 100;
      Image1.Canvas.Rectangle(0,0,Image1.Width-1, Image1.Height);
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Image1.Width := 0;
    end;
    Le probleme c'est qu'en augmentant la taille de l'image une 2eme fois, j'ai l'impression que la taille de mon canvas ne change pas.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 662
    Points : 25 447
    Points
    25 447
    Par défaut
    Je pense effectivement, que lors du 1er Rectangle cela alloue l'objet Bitmap qui n'existait pas avant (via l'accesseur TImage.Picture.Canvas qui doit par défaut créer un objet Bitmap)
    Lors du 2nd Rectangle, comme l'objet Bitmap existe, il ne le récréé pas !

    Force comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Image1.Width :=  Image1.Width + 100;
    Image1.Picture.Bitmap.Width :=  Image1.Width;
    // l'accesseur Bitmap va créer l'objet la 1ère fois, et l'accesseur de Width va le réallouer pour effectuer le changement de taille !
    Ne pas confondre TImage.Width et TBitmap.Width, ces deux propriétés sont indépendante à la base !

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2002
    Messages : 245
    Points : 154
    Points
    154
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Je pense effectivement, que lors du 1er Rectangle cela alloue l'objet Bitmap qui n'existait pas avant (via l'accesseur TImage.Picture.Canvas qui doit par défaut créer un objet Bitmap)
    Lors du 2nd Rectangle, comme l'objet Bitmap existe, il ne le récréé pas !

    Force comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Image1.Width :=  Image1.Width + 100;
    Image1.Picture.Bitmap.Width :=  Image1.Width;
    // l'accesseur Bitmap va créer l'objet la 1ère fois, et l'accesseur de Width va le réallouer pour effectuer le changement de taille !
    Ne pas confondre TImage.Width et TBitmap.Width, ces deux propriétés sont indépendante à la base !
    Merci cher Troll!! Ca marche bien

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

Discussions similaires

  1. Faire pivoter dessin sur canvas
    Par sp2308 dans le forum Débuter
    Réponses: 4
    Dernier message: 12/12/2014, 14h31
  2. Problème de dessin sur Canvas
    Par ZouBi dans le forum Composants graphiques
    Réponses: 5
    Dernier message: 18/06/2011, 11h28
  3. Réponses: 5
    Dernier message: 23/09/2006, 12h40
  4. Réponses: 1
    Dernier message: 05/08/2006, 20h43
  5. Réponses: 23
    Dernier message: 29/07/2006, 19h09

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