Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#4

AW: Farbe wird verändert

  Alt 8. Mai 2017, 18:16
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

Geändert von EWeiss (11. Jul 2019 um 16:47 Uhr)
  Mit Zitat antworten Zitat