Ich hab das wie folgt gelösst:
Delphi-Quellcode:
var
Form1: TForm1;
Farbarray : array[0..$FFFFFF] of integer;
implementation
{$R *.dfm}
function tform1.zaehlefarben(worin : Timage) : tcolor;
var
i,i2 : integer;
begin
for i := 0 to high(farbarray) do farbarray[i] := 0; //alles auf 0 setzen
for i := 0 to worin.height do for i2 := 0 to worin.width do inc(Farbarray[worin.Canvas.Pixels[i,i2]]); //pixel f. pixel durchgehen und wert im array incrementieren
result := farbarray[0]; //initialisieren
for i := 0 to high(farbarray)-1 do if Farbarray[i] < Farbarray[i+1] then result := i+1; //welche zahl ist am grössten?
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(ColorToString(zaehlefarben(image1)));
end;
end.
Ein kleines Problem hat die Sache aber, was wenn 2 Farben zufällig gleichoft vorkommen?
Thomas H.