Code:
Function Gray(vColor:TByte4):TByte4;
Var
  vAverage:TFlt;
begin
  vAverage:=vColor.R*0.3+vColor.G*0.59+vColor.B*0.11;
  result.R:=Round(vAverage);
  result.G:=Round(vAverage);
  result.B:=Round(vAverage);
  result.A:=vColor.A;
end;