Thema: Delphi TColor mit Alpha

Einzelnen Beitrag anzeigen

Andreas L.

Registriert seit: 23. Mai 2011
Ort: Furth im Wald
308 Beiträge
 
Delphi 11 Alexandria
 
#1

TColor mit Alpha

  Alt 5. Jul 2019, 09:37
Hallo,

ich möchte mit TColor und Alpha-Transparenz arbeiten. Soweit ich weiß sind die ersten 2 Zeichen nach dem $-Symbol der Alpha-Wert, danach folgt rot, grün und blau. Stimmt das?

Wie kann ich nun den Alpha-Wert setzen bzw. extrahieren?

In der Graphics-Unit habe ich folgendes gefunden:
Delphi-Quellcode:
procedure ByteSwapColors(var Colors: array of COLORREF; Count: Integer);
var // convert RGB to BGR and vice-versa. TRGBQuad <-> TPaletteEntry
  I: Integer;
  Color: COLORREF;
begin
  for I := 0 to Count - 1 do
  begin
    Color := Colors[I];

    { Alpha = HiByte(HiWord(Color)) = (Color shr 16) shr 8
      Red  = LoByte(Hiword(Color)) = Byte(Color shr 16)
      Green = HiByte(LoWord(Color)) = Word(Color) shr 8
      Blue  = LoByte(LoWord(Color)) = Byte(Word(Color))
      Colors[I] := MakeLong(MakeWord(Red, Green), MakeWord(Blue, Alpha)); }


    Colors[I] := (Byte(Color shr 16) or (Word(Color) shr 8) shl 8) or
      (Byte(Word(Color)) or ((Color shr 16) shr 8) shl 8) shl 16;
  end;
end;
Interpretiere ich das richtig dass man mit folgendem Code an den Alpha-Wert kommt?

Delphi-Quellcode:
var
  Color: COLORREF;
  Alpha: Word;
begin
  Color := $00000000;

  Alpha := (Color shr 16) shr 8;
end;
Wenn das stimmt, wie setze ich den Wert wenn er als Word oder Byte vorliegt?

Schöne Grüße,
Andreas Lauß
Andreas Lauß
Blog
  Mit Zitat antworten Zitat