Вот то что ты подписал, это и есть присвоение битмапу orig, изображения рабочего стола.
Код:
c.Handle := GetWindowDC(GetDesktopWindow); //узнаем хандл рабочего стола и присваиваем его хандлу канваса "с"
orig.Canvas.CopyRect(r, c, r); // копируем изображение в битмап
CopyRect(Dest:Trect;Canvas:TCanvas; Source:TRect) Выполняет копирование прямоугольника Source из канвы Canvas в прямоугольник Dest в области самого объекта (нашел в первой ссылке)
А в коде который ты выложил, я вообще не вижу как рисуется затемнение.
Собственно вот здесь у тебя заполняется битмап темп, который и рисует свечение:
Код:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
i, j, x0, x1, y0, y1, h : Integer;
O, T : PRGBArray;
begin
x0 := max(0, X - d);
x1 := min(orig.Width-1, X + d);
y0 := max(0, Y - d);
y1 := min(orig.Height-1, Y + d);
temp.Canvas.FillRect(r);
for j := y0 to y1 do begin
O := orig.Scanline[j];
T := temp.ScanLine[j];
for i := x0 to x1 do begin
h := hypotenuse[Abs(X-i), Abs(Y-j)];
if h < d then begin
h := Trunc(h/d*255);
T[i].rgbtRed := max(0, O[i].rgbtRed - h);
T[i].rgbtGreen := max(0, O[i].rgbtGreen - h);
T[i].rgbtBlue := max(0, O[i].rgbtBlue - h);
end;
end;
end;
Repaint;
end;