hey danke für eure Antworten
ich hab das nun so hingepfrimelt:
Delphi-Quellcode:
type
TLine = TRGBTriple;
function TPaintEngine.CountColor(Colors: TColorArray): TAnzahlArray;
var
I, J, K: Integer;
Unten, Oben: Integer;
Line: ^TLine;
begin
Unten := Low(Colors);
// Um nacher nicht so oft die Funktionen zu benutzen
Oben := High(Colors);
SetLength(Result, Succ(Oben));
for I := Unten
to Oben
do
Result[I] := 0;
for I := 1
to fBuffer.Height - 1
do
begin
Line := fBuffer.ScanLine[I];
for J := 1
to fBuffer.Width - 1
do
begin
for K := Unten
to Oben
do
if RGB(line^.rgbtRed,line^.rgbtGreen,line^.rgbtBlue) = Colors[k]
then
Inc(Result[K]);
Inc(Line);
end;
end;
end;
Ergebnis: braucht ca doppelt so viel Zeit wie die Methode über Pixels[I, J] und liefert zudem noch falsche Werte.