Einzelnen Beitrag anzeigen

Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#15

Re: 8 bit Color Byte zu 24 bit Farbe umrechnen

  Alt 27. Sep 2005, 15:19
Also auf den Wert 176 kommt man nur, wenn man den 8-Bit- in einen 12-Bit-Wert umwandelt und dann einfach x16 nimmt, also:

Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
var
  ab: byte;
  r, g, b: byte;
begin
  ab := $FF;
  r := 16 * ((( ab and 7) * 15) div 7);
  g := 16 * ((((ab shr 3) and 7) * 15) div 7);
  b := 16 * ((((ab shr 6) and 3) * 15) div 3);

  showmessage(inttostr(r));
  showmessage(inttostr(g));
  showmessage(inttostr(b));
end;
Du solltest dann aber vielleicht mit einer CLUT (Color Lookup Table) arbeiten und diese bei der Initialisierung füllen.

Delphi-Quellcode:
var
  clut: array [byte] of TColor;

procedure InitClut;
var
  ab: byte;
  r, g, b: byte;
begin
  for ab := $00 to $FF do
  begin
    r := 16 * ((( ab and 7) * 15) div 7);
    g := 16 * ((((ab shr 3) and 7) * 15) div 7);
    b := 16 * ((((ab shr 6) and 3) * 15) div 3);
    clut[ab] := RGB(r, g, b);
  end;
end;
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat