Einzelnen Beitrag anzeigen

endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#1

TBitmap nur zusammenhängende Pixel kopieren

  Alt 28. Apr 2005, 11:27
Hallo,

ich möchte aus einem TBitmap nur Pixel einer Farbe kopieren
die zum selben Objekt gehören, was allerdings gar nicht so einfach ist.
ähnlich dem photoshop werkezug "zauberstab" mit der option "benachbart".

angefangen hab ich nun mit einer methode die das bild von links nach recht
spaltenweise (!) einliest und alle pixel der selben farbe in ein zweites
bitmap kopiert:

Delphi-Quellcode:
  x:= 0;
  while x < CacheBitmap.Width - 1 do
  begin
    for y := 0 to CacheBitmap.Height - 1 do
    begin
      P := CacheBitmap.ScanLine[y];
      for i:= 0 to x do
        inc(P);
      if (P^.rgbRed = 0) and (P^.rgbGreen = 0) and (P^.rgbBlue = 0) then
      begin
        MyRect:= Rect(x, y, SmartBitmap.Height-1, SmartBitmap.Width-1);
        MyOther:= Rect(x,y,SmartBitmap.Height-1, SmartBitmap.Width-1);
        SmartBitmap.Canvas.CopyRect(MyOther,CacheBitmap.Canvas,MyRect);
      end;
    end;
    inc(x);
  end;
zusätzlich habe ich auch schon mit einem zweiten pointer experimentiert,
der den nächst liegenden rechten pixel mit dem aktuellen vergleicht.
mein problem allerdings bleibt bestehen, wie erkenne ich wann welcher
pixel zur selben form gehört. hat da jemand vielleicht eine idee?

ein gutes beispiel um das zu veranschaulichen wäre z.B. das 'E' und die '3'.
von links nach recht gelesen fällt es besonders bei der '3' schwer die pixel zu zuordnen.

mfg
  Mit Zitat antworten Zitat