Es ist ein alt bekanntes Problem das beim laden von Transparenten PNG's die Transparenz verändert werden kann.
Deshalb habe ich ja diese Funktion um das zu verhindern.
Definition
pBits: PRGBQuad;
AlphaCoef: Single;
Delphi-Quellcode:
for y := 0 to (h - 1) do
begin
for x := 0 to (w - 1) do
begin
if pBits.rgbReserved > 0 then
begin
AlphaCoef := (pBits.rgbReserved / 255);
pBits.rgbBlue := round(pBits.rgbBlue / AlphaCoef);
pBits.rgbGreen := round(pBits.rgbGreen / AlphaCoef);
pBits.rgbRed := round(pBits.rgbRed / AlphaCoef);
end;
inc(pBits);
end;
end;
definition
AlphaCoef: Byte;
Delphi-Quellcode:
for y := 0 to (h - 1) do
begin
for x := 0 to (w - 1) do
begin
if pBits.rgbReserved > 0 then
begin
AlphaCoef := pBits.rgbReserved div 255;
if AlphaCoef > 0 then
begin
pBits.rgbBlue := pBits.rgbBlue div AlphaCoef;
pBits.rgbGreen := pBits.rgbGreen div AlphaCoef;
pBits.rgbRed := pBits.rgbRed div AlphaCoef;
end if
end;
inc(pBits);
end;
end;
Aber beide bringen nicht den gewünschten Effekt.
Die Transparente Farbe verändert sich.
siehe Shot.
gruss