Ich hab's!
Hab mehr durch Zufall herausgefunden, dass man die
RGB-Werte jeweils mit dem Alpha-Wert/255 multiplizieren muss, damit das Ergebnis stimmt:
Delphi-Quellcode:
procedure TfrmMain.PaintBMP;
var pBMP : PRGBLine;
var x,y : integer;
begin
//--
for y := 0 to 255 do
begin
pBMP := bgBMP.ScanLine[y];
//
for x := 0 to 255 do
begin
pBMP[x].rgbReserved := 255-y;
//
pBMP[x].rgbRed := Byte(Round((pBMP[x].rgbRed)*(pBMP[x].rgbReserved / 255)));
pBMP[x].rgbGreen := Byte(Round((pBMP[x].rgbGreen)*(pBMP[x].rgbReserved / 255)));
pBMP[x].rgbBlue := Byte(Round((pBMP[x].rgbBlue)*(pBMP[x].rgbReserved / 255)));
end;
end;
//
Display;
end;
Das Ergebnis schaut dann so aus wie im Anhang.
Danke nochmal an Bummi für die Mühe
Patti