Для оттенков лучше использовать другую функцию:
function ColorHLSToRGB(Hue: Word; Luminance: Word; Saturation: Word): TColorRef;
Выставляйте в 0 значение Saturation и будет все серое.
Например вывести 220 оттенков серого:
Код:
for i := 0 to 220
do Canvas.Pixels[i,50] := ColorHLStoRGB(i,i,0);
Не забудьте подключить GraphUtil