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 :

Problème de Canvas.Draw


Sujet :

Langage Delphi

  1. #1
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 812
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 812
    Points : 15 228
    Points
    15 228
    Par défaut Problème de Canvas.Draw
    Bonsoir tout le monde.

    Extrait de l'aide D7 sur « Monochrome », je trouve l'exemple suivant, texto :
    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
    procedure TForm1.Button1Click(Sender: TObject);
    var
     BitMap1,BitMap2 : TBitMap;
    begin
       BitMap2 := TBitMap.Create;
       BitMap1 := TBitMap.Create;
    try
       BitMap1.LoadFromFile('C:\Program Files\Fichiers Communs\Borland Shared\Images\Splash\256color\factory.bmp');
       BitMap2.Assign(BitMap1);     // Copie BitMap1 dans BitMap2
       BitMap2.Dormant;             // Libère les ressources GDI
       BitMap2.FreeImage;           // Libère la mémoire.
       Canvas.Draw(20,20,BitMap2);  // Notez que les appels précédents n'ont pas fait perdre l'image
     
       BitMap2.Monochrome := true;
       Canvas.Draw(80,80,BitMap2);
       BitMap2.ReleaseHandle;       // Avec cela on perd le bitmap;
     finally
       BitMap1.Free;
       BitMap2.Free;
     end;
    end;
    Ce qui m'interpelle, c'est le commentaire « Notez que les appels précédents n'ont pas fait perdre l'image » car moi, je ne note rien !

    Ou plutôt, je note qu'en 20,20 rien n'est affiché (et en 80,80 j'ai un affreux pâté tout noir, normal).

    Bon, je me dis qu'il y a une erreur dans l'aide et je teste en commentant la ligne concernée mais là, ô surprise, plus rien ne s'affiche !

    Je décommente et commente la ligne suivante (BitMap2.Monochrome := true;), histoire d'en avoir le cœur net et oui, j'ai bien l'image en couleur en 80,80 -- mais toujours rien en 20,20...

    Alors je commente aussi le Draw en 80,80 et encore une fois, rien ne s'affiche.

    J'y perds mon latin...

    Résumons :
    Pour afficher un pâté noir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       Canvas.Draw(20,20,BitMap2);  // Notez que les appels précédents n'ont pas fait perdre l'image
       BitMap2.Monochrome := true;
       Canvas.Draw(80,80,BitMap2);
    Pour afficher l'image en couleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       Canvas.Draw(20,20,BitMap2);  // Notez que les appels précédents n'ont pas fait perdre l'image
    //   BitMap2.Monochrome := true;
       Canvas.Draw(80,80,BitMap2);
    Pour ne rien afficher, au choix
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    //   Canvas.Draw(20,20,BitMap2);  // Notez que les appels précédents n'ont pas fait perdre l'image
    //   BitMap2.Monochrome := true;
       Canvas.Draw(80,80,BitMap2);
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       Canvas.Draw(20,20,BitMap2);  // Notez que les appels précédents n'ont pas fait perdre l'image
    //   BitMap2.Monochrome := true;
    //   Canvas.Draw(80,80,BitMap2);
    peu importe que BitMap2.Monochrome soit commenté ou pas...


    Question : pourquoi faut-il deux appels à Canvas.Draw pour avoir une image affichée ?
    Pour tester, suffit de copier/coller ce code (en vérifiant quand même le chemin de l'image, lol !) ou de taper Monochrome dans l'EDI puis F1.

    Merci,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  2. #2
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 812
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 812
    Points : 15 228
    Points
    15 228
    Par défaut
    Cherchez plus, c'est dingue...

    En attendant une réponse du forum, j'ai rajouté un bouton pour tester autre chose (j'insiste sur autre !), et maintenant tout fonctionne.
    Allez comprendre...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

Discussions similaires

  1. problème avec System.Drawing.Image.FromFile
    Par tenderstoune dans le forum C#
    Réponses: 8
    Dernier message: 07/08/2008, 09h39
  2. Problème sauvegarde Canvas
    Par Hujii dans le forum Interfaces Graphiques en Java
    Réponses: 9
    Dernier message: 26/04/2008, 19h27
  3. Problème avec Canvas et drawImage
    Par marmarnas dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 01/04/2008, 11h26
  4. Problème graphique System.Drawing bug
    Par sayag dans le forum C#
    Réponses: 6
    Dernier message: 08/06/2007, 17h54
  5. [D6] Problème de canvas avec MessageDlg
    Par dridri86 dans le forum Langage
    Réponses: 9
    Dernier message: 12/07/2005, 13h44

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