Einzelnen Beitrag anzeigen

dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Pixel gleicher Farbe zählen

  Alt 22. Jun 2008, 17:58
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?
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat