Zitat von
Apollonius:
Nimm TBitmap.Scanline.
Ich kenne ScanLine zwar nicht, habe mal aber hier im Forum gesucht und das ist dabei rausgekommen:
Delphi-Quellcode:
type
TColorArray = Array of TColor;
TAnzahlArray = Array of Integer;
TLine = Array[1..3] of Byte;
function CountColor(aBitmap: TBitmap; 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 := 0{oder 1?} to aBitmap.Height do
begin
Line := aBitmap.ScanLine[I];
for J := 0{oder 1?} to aBitmap.Width do
for K := Unten to Oben do
if Line[J] = Colors[K] then
Inc(Result[K]);
end;
end;
Leider kommt in der Zeile
if Line[J] = Colors[K] then
eine
AV. Wo ist mein Fehler?