// Eine Farbe wird in ihre entsprechende Grau-Schattierung konvertiert.

// Getestet mit RS 10.4 unter Win11
 
function Gray(Clr: TColor): TColor; 
asm 
  MOVZX   EDX,AH 
  MOV     ECX,EAX 
  SHR     ECX,$10 
  MOVZX   EAX,AL 
  IMUL    EAX,$4C8B 
  IMUL    EDX,$9646 
  IMUL    ECX,$1D2F 
  ADD     EAX,EDX 
  ADD     EAX,ECX 
  SHR     EAX,$10 
  MOVZX   EAX,AL 
  MOV     AH,AL 
  SHL     EAX,8 
  MOV     AL,AH 
end; 
 
// Beispiel 1 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
  Color := Gray(clLime); 
end; 
 
// Beispiel 2 
procedure TForm1.Button2Click(Sender: TObject); 
var 
  x, y: Integer; 
  bm: TBitmap; 
begin 
  // Falls Image1 z.B. ein Jpeg enthält, 
  // wird der Umweg über "bm" gewählt 
  bm := TBitmap.create; 
  bm.assign(Image1.Picture.Graphic); 
  with bm do 
    for x := 0 to pred(Width) do 
      for y := 0 to pred(Height) do 
        SetPixel(Canvas.Handle, x, y, Gray(GetPixel(Canvas.Handle, x, y))); 
  Image1.Picture.assign(bm); 
  FreeAndNil(bm); 
end;
Zugriffe seit 6.9.2001 auf Delphi-Ecke