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