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ß