Bonsoir tout le monde.
Extrait de l'aide D7 sur « Monochrome », je trouve l'exemple suivant, texto :
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 !
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;
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,
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...
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);
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,
Partager