Halo sur une image

Contenu du snippet

Cette procédure permet de créer un halo de lumière de centre le point de coordonnées X et Y et de diamètre D sur le bitmap Bmp.

Exemple d'appel :
CreerHalo(25, 25, 1000, MonBitmap);

Ce code nécessite la déclaration préalable des types suivants :
TRGBArray = ARRAY[0..0] OF TRGBTriple;
pRGBArray = ^TRGBArray;

Source / Exemple :


procedure CreerHalo(X, Y, D : Integer; Bmp : TBitmap);
var
  I, J, adding : Integer;
  P : pRGBArray;
begin
  D := D div 2;
  for j := max(0, Y-D) to min(Y+D, bmp.Height-1) do begin
    P := bmp.ScanLine[j];
    for i := max(0, X-D) to min(X+D, bmp.Width-1) do begin
      adding := 255 - min(trunc(255*(sqrt(sqr(i-X)+sqr(j-Y))/D)),255);
      P[i].rgbtRed := min(255, P[i].rgbtRed + adding);
      P[i].rgbtGreen := min(255, P[i].rgbtGreen + adding);
      P[i].rgbtBlue := min(255, P[i].rgbtBlue + adding);
    end;
  end;
end;

A voir également