Einzelnen Beitrag anzeigen

Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#6

Re: Farbe von Bildschirminhalt ermitteln ?

  Alt 2. Jul 2009, 15:27
Oder so was ?

Delphi-Quellcode:
function TForm1.GetBitmapAmbiColor(inBmp: TBitmap): TColor;
type
  TRGBArray = array [Word] of TRGBTRIPLE;
  pRGBArray= ^TRGBArray;
var
  x, y: integer;
  LineScan: pRGBArray;
  AmbiCol: record
    aB, aG, aR: int64;
  end;
  counts: cardinal;
begin
  if inBmp.PixelFormat <> pf24Bit then
    inBmp.PixelFormat := pf24Bit;

  AmbiCol.aR := 0;
  AmbiCol.aG := 0;
  AmbiCol.aB := 0;

  counts := 0;

  for y := 0 to inBmp.Height-1 do // Farbe im Drurchschnitt per Bitmap
  begin
    LineScan := inBmp.Scanline[y];
    for x := 0 to inBmp.Width-1 do
    begin
      inc(AmbiCol.aR, LineScan[x*3].rgbtRed);
      inc(AmbiCol.aG, LineScan[x*3+1].rgbtGreen);
      inc(AmbiCol.aB, LineScan[x*3+2].rgbtBlue);

      inc(counts);
    end;
  end;

  AmbiCol.aR := AmbiCol.aR div counts;
  AmbiCol.aG := AmbiCol.aG div counts;
  AmbiCol.aB := AmbiCol.aB div counts;

  Result := RGB(AmbiCol.aR , AmbiCol.aG , AmbiCol.aB );
end;
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat