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;