// Hiermit können Farben in einem Bitmap innerhalb einer bestimmten Prozentzahl
// angeglichen werden, um beispielsweise einen leicht abgestuften Hintergrund
// auf die gleiche Farbe zu setzen.

siehe Beispielaufruf


// Getestet mit D4 unter XP

procedure angleichen(Bild: TBitmap; Grundfarbe: TColor; Prozent: Single); 
var 
  x, y, b3: integer; 
  p: PBytearray; 
  r, g, b: Byte; 
begin 
  if (Prozent = 0) or (Bild.width = 0) or (Bild.height = 0) then exit; 
  if Prozent > 100 then Prozent := 100; 
  bild.pixelformat := pf24bit; 
  Grundfarbe := ColorToRGB(Grundfarbe); 
  r := getrvalue(Grundfarbe); 
  g := getgvalue(Grundfarbe); 
  b := getbvalue(Grundfarbe); 
  b3 := bild.width * 3; 
  for y := 0 to bild.height - 1 do begin 
    p := bild.scanline[y]; 
    x := 0; 
    while x < b3 do begin 
      if (abs(b - p[x]) * 100 / 255 <= Prozent) 
        and (abs(g - p[x + 1]) * 100 / 255 <= Prozent) 
        and (abs(r - p[x + 2]) * 100 / 255 <= Prozent) 
        then begin 
        p[x] := b; 
        p[x + 1] := g; 
        p[x + 2] := r; 
      end; 
      inc(x, 3); 
    end; 
  end; 
end; 
 
 
// Beispielaufruf 
 
procedure TForm1.Button9Click(Sender: TObject); 
begin 
  angleichen(Image1.picture.bitmap, clWhite, 25); 
  image1.refresh; 
end;




 

Zugriffe seit 6.9.2001 auf Delphi-Ecke