This is a quick test a put together that works, fades from black to the image and paints onto TPainBox. Be sure to use TFastARGB32Canvas. Also no need to increase alpha by 1, whole fade tooks about 3 seconds on my PC this way.
var
Img, OutImg: TSingleImage;
Canvas, OutCanvas: TImagingCanvas;
I: Integer;
begin
Img := TSingleImage.CreateFromFile('data\Tigers.png');
Img.Format := ifA8R8G8B8;
Canvas := TFastARGB32Canvas.CreateForImage(Img);
OutImg := TSingleImage.CreateFromImage(Img);
OutCanvas := TFastARGB32Canvas.CreateForImage(OutImg);
OutCanvas.FillColor32 := pcBlack;
OutCanvas.Clear;
I := 0;
Canvas.FillChannel(ChannelAlpha, I);
while I <= 255 do
begin
OutCanvas.Clear;
Canvas.FillChannel(ChannelAlpha, I);
Canvas.DrawAlpha(Img.BoundsRect, OutCanvas, 0, 0);
DisplayImage(PaintBox.Canvas, 0, 0, OutImg);
Inc(I, 1);
end;
end;