Ich würd immer für jeden Pixel, welcher noch nicht in einer (def.) Liste existiert, einen neuen Eintrag erstellen und für jeden Pixel, der schon besteht, würde ich den Counter des Eintrages erhöhen
Programmiertechnisch würde das so aussehen:
Delphi-Quellcode:
PPixelCounter = ^TPixelCounter;
TPixelCounter = record
Pixel: TColor;
Count: Cardinal;
Prev, Next: PPixelCounter;
end;
TPixelContainer = class
public
property List: PPixelCounter Read FList Write SetList;
procedure Add( Pixel: TColor );
function GetLastItem(): PPixelContainer;
function SearchPixel( Pixel: TColor ): PPixelContainer;
end;
// Add erweitert die doppelt verkettete Liste um ein neues Element;
// SearchPixel geht die ganze Liste durch und schaut, ob Pixel enthalten ist und liefert die Adresse des Eintrages zurück
Konkrete Vorgehensweise:
Code:
1. Bildpunkt vom Display/Desktop ermitteln
2. Per SearchPixel prüfen, ob der Pixel schon vorhanden ist (NIL?)
3. Falls es vorhanden ist, dann den Rückgabewert von SearchPixel dereferenzieren und dessen Count Wert um 1 erhöhen
4. Ansonsten einen neuen Eintrag erstellen
So ausführlich hab ich noch niemandem geholfen
Hoffe ich konnt dir helfen
MfG