Revenir au sommaire Tutoriaux

Canvas Couleurs Pixels Palettes
Programmation des couleurs
Bitmaps
Scanlines
Masques Conclusion Références


Programmation des couleurs

Comment récupérer la couleur d'un pixel d'un canvas

Var
  Couleur : Tcolor;
  ..............
  Couleur := Tcanvas.Pixels[x, y];

Permet de lire un pixel d'un canvas.
On utilise ensuite ColorToRGB pour convertir le format TColor en format RGB utilisable par l'API Windows. Ensuite, on se sert des fonctions GetRValue, GetGvalue, GetBvalue de l'API Windows.

Noter que Le résultat R,G, B est aussi valable si ces variables sont définies comme Integer au lieu de Byte.

var
  R, G, B : byte
  Couleur : Tcolor;
begin
  Couleur := acanvas.pixels[10,10];
  R := GetRValue( ColorToRGB(couleur));
  G := GetGValue( ColorToRGB(couleur));
  B := GetBValue( ColorToRGB(couleur));

La fonction Pixels fonctionne quel que soit le format (2, 15, 256 ou 16 millions de couleurs). La répétition de ces tests et du contrôle de validité des x et y à chaque pixel est pénalisant en termes de performances.

Comment donner une couleur à un pixel d'un canvas

Tcanvas.Pixels[x, y] := Couleur;  permet de modifier un pixel d'un canvas

On utilise la fonction API windows RGB pour convertir les 3 couleurs en TColor

var
  couleur : Tcolor;
begin
  Couleur := RGB(255, 255, 0);
// jaune

  acanvas.pixels[10,10] := Couleur;
ou
  acanvas.pixels[10,10] := RGB(255,255,0);
 


Composants Tpaintbox et Timage

Delphi met à notre disposition deux composants pour dessiner, en plus du canvas de la fiche : ol s'agit des Tpaintbox et Timage.

Tpaintbox

La boîte à peindre fournit sa méthode paint pour dessiner sur son canvas.
Cependant, une paintbox seule se révèle vite insuffisante pour le traitement d'images. Le plus souvent, on mémorise d'une part le bitmap original (lu à partir d'un fichier) et un bitmap de travail qui permet de dessiner en cachette, et d'afficher ensuite d'un coup le résultat (ou un rectangle plus petit) avec la méthode paint.

Cela évite le rafraichissement de l'affichage avec le décor de fond, donc les clignotements. De plus, la méthode paint peut être optimisée si on limite son action aux rectangles touchés par les modifications effectuées en cachette dans le bitmap de travail.

Timage

Le composant Timage crée automatiquement un bitmap de travail associé, qui est accessible par
    Image1.Picture.Graphic
ou
  Image1.Picture.bitmap
si l'on sait que l'image contient un bitmap. (if image1.picture.graphic is tBitmap)

Quand on pense écrire sur le canvas de TImage, on écrit en fait dans le bitmap de manœuvre, et le Timage affiche son canvas à partir du canvas du bitmap sous-jacent.

Le composant Timage a été amélioré pour pouvoir lire et écrire des images au format JPEG ou GIF. Le résultat de la lecture que l'on peut utiliser en tant que bitmap se trouve dans Tlmage.picture.graphic.

 

Retour  Suite

Revenir au sommaire Tutoriaux