Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
Delphi 6 Personal
|
Re: Farbe von Bildschirminhalt ermitteln ?
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;
|
|
Zitat
|